(转)使用OnNcHitTest消息实现无标题窗口的移动

使用OnNcHitTest消息
实现无标题窗口的移动

////////////////////////////////////////////////////////////

UINT myWnd::OnNcHitTest(CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值

 // rect 指定,鼠标点在什么地方时,可以移动窗口
 // 其实就是把这部分区域当成是 标题栏
 CRect rect;
 GetClientRect( rect );
 rect.bottom = rect.top + rect.Height() / 4;

 // point 表示的点的显示器屏幕的点
 // 要转化成窗口的点才能使用
 ::ScreenToClient( this->GetSafeHwnd() , &point );

 UINT nHitTest = CWnd::OnNcHitTest(point);
 return ( rect.PtInRect( point ) ) ? HTCAPTION : nHitTest;
}

也可以使用鼠标的按下时捕获鼠标,移动(中来移动窗口,添加一个静态点变量,记录上一个点,来移动窗口),弹起释放鼠标,感觉这种效果不是很理想,遇到鼠标移动到控件的时候,会界面会跳一下的感觉。

原文地址:http://blog.csdn.net/wincol/article/details/5835987

posted @ 2017-03-02 17:39  懒猫的新窝  阅读(407)  评论(0)    收藏  举报