本实例主要实现了通过鼠标的移动,来实现窗口的同步移动。即鼠标左键按下后并对鼠标进行移动,从而窗口跟随鼠标移动,直到鼠标左键抬起,其具体思路是重载”WM_NCHITTEST”消息,在生成的”OnNcHitTest”函数中添加鼠标移动时窗口随之移动的代码,具体实现步骤如下:
在所要移动的窗口类上面,点击鼠标右键,选择”Add Windows Message Handler…”如图所示:
在弹出的窗口中选择”WM_NCHITTEST”消息,如下图所示:
此时双击”WM_NCHITTEST”消息,或点击”AddHandler”接钮,添加到已经存在的消息列表中,如下图所示:
如果”WM_NCHITTEST”消息已经成功加入列已经存在的消息列表中,则点击”Add and Edit”按钮,如下图所示:
此时系统会自动生成对”WM_NCHITTEST”消息的映射函数(函数名为:OnNcHitTest),如下图所示:
最后,在刚刚生成的OnNcHitTest函数中添加窗口的移动代码,代码如下所示:
UINT CJaneDictDlg::OnNcHitTest(CPoint point) { // TODO: Add your message handler code here and/or call default // 父类窗口的调用,获取鼠标点击的状态 UINT uHitTest = CDialog::OnNcHitTest(point);
// 判断是否为当前窗口的客户区,如果窗口无标题直接返回HTCAPTION即可。 return (uHitTest == HTCLIENT) ? HTCAPTION : uHitTest;
return CDialog::OnNcHitTest(point); } |
至此,窗口的移动已经实现。