您的位置:首页 > 其它

VC实现无标题栏对话框的拖动

2010-10-20 23:02 246 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: