1.在消息映射中手动添加:
afx_msg UINT OnNcHitTest(CPoint pt);
2.在.cpp文件中添加:
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
//{{AFX_MSG_MAP(CMyDialog)
ON_WM_SYSCOMMAND()
ON_BN_CLICKED(ID_APP_ABOUT,OnAbout)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_NCHITTEST()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
3.实现该函数:
UINT CMyDialog::OnNcHitTest(CPoint pt)
{
CRect rc;
GetClientRect(&rc);
ClientToScreen(&rc);
return rc.PtInRect(pt) ? HTCAPTION : CDialog::OnNcHitTest(pt);
}
PS: 在VS2005中,微软将OnNcHitTest的返回类型设为LRESULT,之前的返回类型为UINT
可通过如下方法解决在VS2005中的问题
#if _MSC_VER >= 1400
afx_msg LRESULT OnNcHitTest(CPoint point);
#else
afx_msg UINT OnNcHitTest(CPoint point);
#endif