OnNcHitTest函数的作用,以及如何利用其禁止对话框放缩的方法
来源:互联网 发布:js 数组 增加 编辑:程序博客网 时间:2024/06/05 11:27
返回值:下面列出的鼠标击中测试枚举值之一。
· 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 在最大化按钮上。
参数: point 包含了光标的x轴和y轴坐标。这些坐标总是用屏幕坐标给出的。
说明:
每当鼠标移动时,框架就为包含光标(或者是用SetCapture成员函数捕获了鼠标输入的CWnd对象)的CWnd对象调用这个成员函数。
注意 框架调用这个成员函数以允许你的应用程序处理一个Windows消息。传递给你的成员函数的参数反映了接收到消息时框架接收到的参数。如果你调用了这个函数的基类实现,则该实现将使用最初传递给消息的参数(而不是你提供给这个函数的参数)。
Windows首先确定鼠标点中了哪个窗口,然后向那个窗口发送一个WM_NCHITTEST消息找出此窗口的哪个"非客户区"(如边界、最大化/最小化按钮、菜单、标题等等)拥有鼠标光标。接着默认的窗口过程响应消息并返回一个特定的代码。如果鼠标指针落在标题栏中,那么这个特定代码就是HTCAPTION,此时Windows便进入拖拽模式,以便用户能够对窗口进行移动操作。
(1)要想在客户区里用鼠标拖动对话框,那么只要在客户区里模仿标题栏里的鼠标拖动行为即可。
如果应用不是一个纯粹的对话框程序,而是是包含CFormView或其它非对话框视图,处理方法几乎是一样的,只需在视图代码中做一点小小的改动即可,因为Windows在发送WM_NCHITTEST消息时,是将它发送到鼠标光标下的框架/视图最顶层非透明窗口,由于视图首先获得WM_NCHITTEST消息。所以只要在视图的WM_NCHITTEST消息处理例程中返回HTTRANSPARENT,让视图对鼠标点击"透明"即可。这样做以后,Windows将忽略视图并继续搜索能接收WM_NCHITTEST的窗口。如果顺利的话,将找到父窗口,这时用与对话框相同的WM_NCHITTEST处理代码即可,即在客户区中的点击返回HTCAPTION。你甚至可以通过鼠标坐标的象素计算,在规定的局部范围内实现视图透明。
(2)想要禁止对话框放缩:
只需要在OnNcHittest函数中,如果捕捉到的是会改变控件大小的代码,就可以用HITCAPTION来代替,鼠标点到对话框的非客户区都会是
好像点到标题栏一样,是移动整个对话框,而不是放缩对话框了。
0 0
- OnNcHitTest函数的作用,以及如何利用其禁止对话框放缩的方法
- MFC对话框禁止移动 使标题栏不响应鼠标消息 通过客户区移动窗体 OnNcHitTest()的实现
- 几个少见的宏以及其作用
- 使对话框的最大化、最小化和关闭按钮变灰以及对其重载的方法
- CListControl的OnMouseMove和OnNcHitTest
- 禁止对话框的拖动
- 禁止对话框的拖动
- 关于链表的总结以及其作用
- WebBrowser控件中禁止alert,confirm等对话框的方法
- C++:在成员函数后面放const的作用
- 如何禁止函数的传值调用
- 如何确定函数依赖和其作用
- MFC禁止对话框的拖动
- MFC对话框利用空闲时间的方法
- 指向函数的指针以及其做函数参数
- 利用函数的作用域来封装
- 黏滞位的作用以及如何设置
- Android keystore的作用以及如何生成
- Tailspin Spyworks指南第五讲:业务逻辑
- 项目中小的功能点
- Python JSON decode和encode
- 优秀的API接口设计原则及方法
- HDU 1074 状压DP
- OnNcHitTest函数的作用,以及如何利用其禁止对话框放缩的方法
- vlc补2
- linux 基本命令
- 适合电脑族的3种花茶
- Java泛型-类型擦除
- 第三章 Linux操作系统的安装
- 自适应网页设计四步搞定
- eclipse上安装 Marketplace Client
- 8种CSS清除浮动的方法优缺点分析