无边对话框没有标题栏供我们拖动,那我们要想办法使得我们单击其客户区的时候可以拖动,那么,只要以下简单的步骤即可:

  1.给该对话框添加WM_ONLBUTTONDOWN消息

  2.在OnLButtonDown函数中添加如下代码:

1 PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));

  如果你只是要简单的拖动它的话,添加这一句即可,但是如果你还要在鼠标左键弹起时响应别的事件,那么只有这句话是不够的,此时在OnLButtonDown函数中将上面代码换成如下代码:

1 //PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
2 SendMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
3 PostMessage(WM_LBUTTONUP, HTCLIENT, MAKELPARAM(point.x, point.y)); //与上句合用,主动发出一个LButtonUp消息,这样就可以响应OnLButtonUp了!

这是SendMessage和PostMessage的机制不同导致的。

SendMessage和PostMessage的区别,这里粘一下一篇讲解比较详细的文章:http://www.cnblogs.com/McJeremy/archive/2009/09/28/1575741.html

posted on 2013-10-18 18:02  胡小颖颖  阅读(178)  评论(0编辑  收藏  举报