“在调用SetCapture之后,鼠标消息总是客户区消息,即使鼠标正在窗口的非客户区”按照上面这句话,分析一下按住标题栏拖动窗口的过程(不考虑WM_NCHITTEST)
动作 消息 处理
1 鼠标在标题栏按下 WM_NCLBUTTONDOWN 调用SetCapture捕获鼠标
2 鼠标拖动窗口 WM_MOUSEMOVE 绘制虚线矩形框
3 松开鼠标 WM_MOUSEUP 计算窗口新位置,移动窗口,ReleaseCapture,擦出虚线框这样的画,如果自己的程序处理了WM_MOUSEMOVE 或 WM_MOUSEUP,那就行不通了我的理解有误,请说说这到底是怎么的一个过程?
动作 消息 处理
1 鼠标在标题栏按下 WM_NCLBUTTONDOWN 调用SetCapture捕获鼠标
2 鼠标拖动窗口 WM_MOUSEMOVE 绘制虚线矩形框
3 松开鼠标 WM_MOUSEUP 计算窗口新位置,移动窗口,ReleaseCapture,擦出虚线框这样的画,如果自己的程序处理了WM_MOUSEMOVE 或 WM_MOUSEUP,那就行不通了我的理解有误,请说说这到底是怎么的一个过程?
解决方案 »
- ATL COM的Dll中如何使用GDI+
- 树形控件(TreeView)一开始显示时即展开所有子项目的风格是什么?
- 表盘 控件
- 如何判断程序是用户通过双击文档来打开程序还是直接双击exe来打开程序的?
- 请问对话框上的工具栏按钮问啥有一边与对话框融为一体?
- 极其初级的问题:CRADDemoDoc* GetDocument() const;这句话是什么意思?
- MFC在图片的某个区域设置热点
- 从文件中检测某一字符串出现的频率,答对者有高分!!(在线等待)
- 如何列举局域网内的所有的机器?
- 程序复制到其它计算机后为什么不能运行
- 按住标题栏拖动,WIN到底发送了哪些消息?
- LoadLibrary失败,返回126,具体问题看内容,各位大虾帮帮我!
SetCapture 是销点鼠标在当前的窗体当中。
你必须 ReleaseCapture() 释放它。
如果你不释放它的话,其它的窗口将无法捕获鼠标消息。