MFC对话框禁止移动 使标题栏不响应鼠标消息 通过客户区移动窗体 OnNcHitTest()的实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MFC对话框禁止移动使标题栏不响应鼠标消息通过客户区移动窗体OnNcHitTest()的实现

//这个函数允许我们对windows鼠标消息进行处理对于基类函数的返回值我们可以通过判断消息类型来进行不同的处理

//也就是说我们可以对鼠标消息做任意处理比如是菜单栏上的消息我们可以返回标题栏的值

//对应的消息类型有如下查找MSDN此函数的值有介绍

UINT CMyDlg::OnNcHitTest(CPoint point)

{

UINT nFlags= CDialog::OnNcHitTest(point); //调用基类的OnNcHitTest获得返回值if(nFlags==HTCAPTION||nFlags==HTSYSMENU) //如果鼠标消息是在标题栏上或者系统菜单栏我们就返回FALSE 不进行处理

{

return FALSE ;

}

else if(nFlags==HTCLIENT) //可以通过客户区域移动窗体但是不能通过标题栏移动return HTCAPTION ;

else

return nFlags;

}

下面是一些测试枚举值

::OnNcHitTest

afx_msg UINT OnNcHitTest( CPoint point );

返回值:下面列出的鼠标击中测试枚举值之一。

· HTBORDER 在不具有可变大小边框的窗口的边框上。

· HTBOTTOM 在窗口的水平边框的底部。

· HTBOTTOMLEFT 在窗口边框的左下角。

· HTBOTTOMRIGHT 在窗口边框的右下角。

· HTCAPTION 在标题条中。

· HTCLIENT 在客户区中。

· HTERROR 在屏幕背景或窗口之间的分隔线上(与HTNOWHERE相同,除了Windows的DefWndProc函数产生一个系统响声以指明错误)。

· HTGROWBOX 在尺寸框中。

· HTHSCROLL 在水平滚动条上。

· HTLEFT 在窗口的左边框上。

· HTMAXBUTTON 在最大化按钮上。

· HTMENU 在菜单区域。

· HTMINBUTTON 在最小化按钮上。

· HTNOWHERE 在屏幕背景或窗口之间的分隔线上。· HTREDUCE 在最小化按钮上。

· HTRIGHT 在窗口的右边框上。

· HTSIZE 在尺寸框中。(与HTGROWBOX相同)· HTSYSMENU 在控制菜单或子窗口的关闭按钮上。· HTTOP 在窗口水平边框的上方。

· HTTOPLEFT 在窗口边框的左上角。

· HTTOPRIGHT 在窗口边框的右上角。

· HTTRANSPARENT 在一个被其它窗口覆盖的窗口中。· HTVSCROLL 在垂直滚动条中。

· HTZOOM 在最大化按钮上。

相关文档
最新文档