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 在最大化按钮上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UsherYue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值