在写一个无边框窗口程序的时候,由于没有了标题标,这时要自己添加代码实现窗口拖动,因此添加WM_NCHITTEST消息,具体实现如下:
CRect rc;
GetWindowRect(&rc);
ScreenToClient(&rc);
ScreenToClient(&point);
rc.bottom = rc.top+30;
return rc.PtInRect(point) ? HTCAPTION : CDialog::OnNcHitTest(point);
大体意思是,自己在无边框窗口中画了"标题栏",标题栏的位置是rect(rc.left,rc.top,rc,right,rc.top+30);
这个区域可以用鼠标来拖动窗口,其它区域则不能拖动,这时发现一个问题,窗口上的消息WM_MOUSEMOVE,WM_LBUTTONDOWN等都没有响应了,调试跟踪才发现,当在窗口rect上移动鼠标时,响应的是WM_NCMOUSEMOVE,而在非rect区域,响应的是WM_MOUSEMOVE,这个和普通窗口的消息是一致的,所以当自己添加WM_NCHITTEST消息的时候,最好不要直接返回HTCAPTION ,如果一直返回这个,系统就当这整个窗口当作标题栏了,最好是规定一个"非客户区",其它全为"客户区".
分享到:
相关推荐
# Qt无边框窗口最大化时拖拽还原代码 通过重定义eventFilter()函数和changeEvent()函数,实现Qt无边框窗口最大化时拖动标题栏还原窗口的效果。
易语言无边框窗口拖动源码,无边框窗口拖动
易语言无边框窗口拖动源码.rar 易语言无边框窗口拖动源码.rar 易语言无边框窗口拖动源码.rar 易语言无边框窗口拖动源码.rar 易语言无边框窗口拖动源码.rar 易语言无边框窗口拖动源码.rar
# PyQt5无边框窗口边缘可拖动调节窗口大小 双击最大化还原 1. 去除窗口边框,自绘标题栏; 2. 通过鼠标事件定义了窗口边缘的拖动事件,使无边框窗口也能调节大小; 3. 增加了自绘标题栏双击时窗口最大化和还原的事件...
易语言源码易语言无边框窗口拖动源码.rar 易语言源码易语言无边框窗口拖动源码.rar 易语言源码易语言无边框窗口拖动源码.rar 易语言源码易语言无边框窗口拖动源码.rar 易语言源码易语言无边框窗口拖动源码.rar ...
QWidget 无边框,可拖动,可改变大小窗口。代码简单可复用。主窗口,子窗口都可以使用。
Qt无边框窗口的移动、拉伸边框、鼠标滚轮缩放大小
vs2013 无边框窗口的resize拖动的实现
无边框窗口,可以拖动,可以缩放,双击可以最大化。可加上自定义图标、标题、最小最大化按钮、关闭按钮,实现自定义自绘标题栏,就可以模仿QQ聊天窗口界面或微信聊天窗口界面。 在 Windows7 64位平台上用 DevCPP ...
QML 无边框 透明 可以拖动的 窗口的 demo。是我自己写的demo。C++交互
# pyside2无边框窗口可拖动拉伸边框缩放调节窗口大小 1. 1. 去除系统自带边框,自定义美观ui; 2. 窗口可随意拖动; 3. 最小化、最大化、关闭按钮; 4. 双击标题栏最大化/还原窗口; 5. 最大化状态下拖动窗口还原; ...
使用QtQuick实现一个无边框框架,支持标题栏双击最大化-普通窗口,支持最大按钮,最小按钮和普通那妞,支持窗体边缘拉伸,窗体拖拽等。
用c++创建无边框窗口, 同时可以通过鼠标拖动改变窗口大小,可以设置窗口的透明度
主要为大家详细介绍了PyQt5实现无边框窗口的标题拖动和窗口缩放,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Qt无边框窗口体拖拽边框改变窗体大小终极方法(橡皮筋窗体)
PyQt5窗口无边框+窗口拖动+窗口拉伸全部实现,源码分享给大家。
易语言无边框窗口拖动源码.7z
QT使用WINAPI实现符合Win7特效的支持图标、缩放、拖拽、阴影、最大最小化、AERO风格无边框窗口