看到一介紹如何按非客戶區移動窗體,既重載WM_NCHITTEST,返回HTCAPTION。但我認為有一點不妥就是沒有了鼠標右鍵功能。這裡我介紹一種方法,即可已在客戶區移動窗體又可以實現鼠標右鍵功能。
1、新建一工程DLG。采用默認設置。
2、添加消息處理函數:
void CDlgDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,pointy));
CDialog::OnLButtonDown(nFlags, point);
}
3、添加右鍵功能。已實現鼠標右鍵功能
void CDlgDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
CMenu menu,*sub;
menu.LoadMenu(IDR_MENU1);
sub=menu.GetSubMenu(0);
ClientToScreen(&point);
sub->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this);
CDialog::OnRButtonDown(nFlags, point);
}
其它實現細節請參見源代碼。
本文配套源碼