目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏.众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法.
解决无标题栏窗口的拖动问题有两种方案,一种方案是使用常规思路来处理鼠标拖拽事件,当窗口获得wm_lbuttondown(onlbuttondown)时,通过设置标志并调用cwnd::setcapture()函数来让当前窗口捕捉鼠标消息,应用程序进入移动模式,此时只要有wm_mousemove消息过来,就可以据此移动框架窗口,最后当用户释放鼠标按钮,则wm_lbuttonup消息处理例程清除标志并调用cwnd::releasecapture()函数将鼠标控制返还给windows.这种方法比较繁琐,首先要决定窗口准备移到哪?然后要想好如何重绘窗口等等,而且根据屏幕显示属性对话框"效果"页中"视觉效果"项的"拖动时显示窗口中内容"复选框是不是选中,拖动效果是不同的.那么你怎么知道设置的信息呢?方法是调用systemparametersinfo(spi_getdragfullwindows).windows要程序员来事无巨细地处理这些繁琐的事情真是太糟了. 【程序编程相关:在C++中的ODBC API数据库编程】一.实现方法 【推荐阅读:C/C++头文件一览】
由于windows本身知道通过鼠标点住标题栏可以移动窗口,那么能不能将鼠标在窗口客户区任何地方的点击拖动行为都模仿成好像是在标题栏中一样呢?答案是肯定的,这样就产生了第二种拖动窗口移动的方法.实际上,用鼠标点住对话框背景进行拖动操作并不难,但是你必须了解在标题栏里拖动窗口的原理.... 下一页