一,对话框处理:
标题栏里拖动窗口的原理:
Windows首先确定鼠标点中了哪个窗口,然后向那个窗口发送一个WM_NCHITTEST消息找出此窗口的哪个"非客户区"(如边界、最大化/最小化按钮、菜单、标题等等)拥有鼠标光标。接着默认的窗口过程响应消息并返回一个特定的代码。如果鼠标指针落在标题栏中,那么这个特定代码就是HTCAPTION,此时Windows便进入拖拽模式,以便用户能够对窗口进行移动操作。
添加窗口的UINT CMyDialog::OnNcHitTest(CPoint pt)事件
简单的处理如下:
UINT CMyDialog::OnNcHitTest(CPoint pt)
{
//return CDialog::OnNcHitTest(pt);
CRect rc;
GetClientRect(&rc); //获取客户区矩形大小
ClientToScreen(&rc); //将矩形的用户坐标转换成屏幕坐标
return rc.PtInRect(pt) ? HTCAPTION : CDialog::OnNcHitTest(pt); //当鼠标落在客户区内,函数返回HTCAPTION。
}
二、MFC中单文档处理
在鼠标点击到客户区的时候,该如何处理?思考~~~