(转)使用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; }
也可以使用鼠标的按下时捕获鼠标,移动(中来移动窗口,添加一个静态点变量,记录上一个点,来移动窗口),弹起释放鼠标,感觉这种效果不是很理想,遇到鼠标移动到控件的时候,会界面会跳一下的感觉。
浙公网安备 33010602011771号