最近公司做一个小的客户端程序,要求用MFC可怜我一直没有好好学过MFC。导致自己狂搜一气google,baidu可是帮了大忙,还算是两天把工作要求的功能实现了。今天讲了一下后续工作安排,恐怕我有点心颤了。近期恐怕要抓紧学习MFC了。在一个好友的意见下以后也把整个项目中遇到的所有问题用blog的方式记录下来。如果有人能用得着,也算没白用心。技术么,永远都要和大家分享才更有意思。好了闲话不说了,开始正文。
做了一个对话框,想要实现拖拽功能。因为我对话框用CImage贴图贴的jpg图片,就没有标题栏了。可是不能拖拽是不行的啊。只好下功夫找了。
网上介绍了一种方法在WM_NCHITTEST(鼠标在对话框上移动就会触发这个消息)消息中处理,当鼠标移动到对话框上时,把全部对话框都强制变为Title-Bar。
afx_msg UINT OnNcHitTest(CPoint point );
这个是函数原型CPoint制定了当前鼠标移动的位置,返回值是一个枚举,就是当前鼠标所在区域的类型HTCAPTION 就是 Title-Bar。所以只要在这个函数中写上如下语句就可以实现在任意位置拖拽了。
LRESULT OnNcHitTest(CPoint point) { CRect rc; GetClientRect(&rc); ClientToScreen(&rc); return rc.PtInRect(point) ? HTCAPTION : C