已知只有拖动对话框窗口的标题栏才能移动窗口,那只要我们告诉系统鼠标点在窗体上就是点在标题栏上即可。
本方案实现的办法很简单,就是使用 WM_NCHITTEST 消息,这个消息是用来获取鼠标当前命中的位置。
现在只要重载 WM_NCHITTEST 岩棉板保温板种类 消息的 OnNcHitTest 函数,使其返回 HTCAPTION ,系统就会认为我们点在标题栏上。
在 CMFCAppDlg.h 中添加消息映射函数 OnNcHitTest(CPoint point) 。
在 CMFCAppDlg.cpp 中添加 ON_WM_NCHITTEST 消息定义。
在 CMFCAppDlg.cpp 中添加 OnNcHitTest(CPoint point) 函数定义。
如果将上述代码中 rc.bottom=rc.top + 100; 的注释取消的话,那么只有在点击窗体顶部到 100 这个方形区域内才能移动窗体,通过此方法可以限制鼠标拖动窗体的点击区域,比如假装自己有个标题栏,点击标题栏下方的区域无法拖动窗体。
同理,只要我们获取控件的区域,将点击这个区域变成点击标题栏就能实现点击控件挪动窗体。
这里需要重载消息处理函数 PreTranslateMessage ,它将会在消息发送到窗口之前拦截消息并处理,再发给窗口。
同样的先在 CMFCAppDlg.h 中添加
再往CMFCAppDlg.cpp 中添加函数定义
这里需要注意的是,上面的方法可能造成控件失控,就像我上面的代码所示,我获取的确认按钮的区域,所以我只有再鼠标完全静止的时候点击按钮才能使用这个按钮本身的功能,一旦鼠标有一点晃动就会变成拖动窗体了。
成都挤塑板 改性聚苯板
这是四川保温砂浆高德招商,改性挤塑板(2021-06-09 18:20:18)
评论(0)