繁体   English   中英

如何很好地处理cdialogex调整大小?

[英]How to nicely handle cdialogex resizing?

我不想为此目的使用其他类,例如codeproject.com的easysize或sizecbar。 我正在使用MFC CDialogEx。 我尝试这样:

LRESULT ChildDialog::OnNcHitTest(CPoint point)
{
    // TODO: Add your message handler code here and/or call default
    //UINT nHitTest = CWnd::OnNcHitTest(uParam, lParam);
    //return (nHitTest == HTLEFT) ? HTNONE : nHitTest;

    return CDialogEx::OnNcHitTest(point);
}

void ChildDialog::OnSizing(UINT fwSide, LPRECT pRect)
{
    //
    //TRACE("%d\n", fwSide);

    if (fwSide == WMSZ_RIGHT)
    {

        SetClassLong(m_hWnd,
            GCL_HCURSOR,
            (LONG)LoadCursor(NULL, IDC_ARROW));

        //ASSERT(FALSE);
        //AfxMessageBox(_T("right"));
    }
    // TODO: Add your message handler code here

    CDialogEx::OnSizing(fwSide, pRect);


}

当我单击对话框消息右侧时,显示右侧。

正如您在投手中看到的那样,我尝试这样做。 更改光标,绘制黑点线。 调整对话框的大小仅在一侧的上方,并且要禁用所有角和左,右和下。 而且,当我从上方调整对话框大小时,也想移动上方控件。

在此处输入图片说明

我不希望有人为我做这一切。 只是建议我如何可以做到这一点。 我从软件depends.exe取得了这个投手。 任何帮助将不胜感激。 提前致谢。

您必须处理OnNCHitTest和OnSetCursor才能更改光标。 当光标在边框上时,从OnNCHitTest返回HTNOWHERE并在OnSetCurosr中设置相应的光标。 您可以从OnNCHitTest设置一个成员变量来了解命中测试值,例如m_hittest。 为了进行大小调整,您可以在捕获时使用OnMouseMove中的CRectTracker类(向下按下按钮)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM