谈无标题窗口的拖放
從微軟的站點看到一個簡單的方法實現,不必計算RECT,不必處理鼠標消息的細節和窗口繪制,就能輕松實現沒有標題欄的窗口移動的問題,就是使用OnNcHitTest消息。
手工增加該消息映射:
用classwizard是無法增加該消息的,在BEGIN_MESSAGE_MAP中加入消息ON_WM_NCHITTEST(),然后在頭文件中加入
afx_msg UINT OnNcHitTest(CPoint point);
在實現文件中,加入LBUTTONDOWN消息函數
void CClyzDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
CTranDialog::OnLButtonDown(nFlags, point);//把CTranDialog改成你的基類
PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
}
加入NCHITTEST消息函數
UINT CClyzDlg::OnNcHitTest(CPoint point)
{
UINT nHitTest = CTranDialog::OnNcHitTest( point );//把CTranDialog改成你的基類
return (nHitTest == HTCLIENT) ? HTCAPTION : nHitTest;
}
編譯運行,沒有出錯就完成了,前后不到十行代碼。
我用基于對話框的應用程序,在vc6.0,winnt4.0下編譯,運行良好。
總結
- 上一篇: 难学的十大编程语言,C++位居第二,它才
- 下一篇: 二、“究恒常之宇宙,成一家之学说”