您的位置:首页 > 其它

MFC对话框不响应标题栏双击

2015-09-17 13:35 232 查看
使MFC对话框不响应标题栏双击

方法一:

重载PreTranslateMessage:

/*.h文件*/

virtual BOOL PreTranslateMessage(MSG* pMsg);

/*.cpp文件*/

BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
{

//不响应标题栏双击
if(pMsg->message == WM_NCLBUTTONDBLCLK) // 非client区域的双击消息
if(pMsg->wParam == HTCAPTION) // 光标所在区域为标题栏
return TRUE;

return CFrameWnd::PreTranslateMessage(pMsg);
}


方法二:

重载OnNcLButtonDblClk、OnNcLButtonDown、OnNcRButtonDown

/*.h文件*/

afx_msg void OnNcLButtonDblClk( UINT nHitTest, CPoint point );
afx_msg void OnNcLButtonDown(UINT nHitTest, CPoint point);
afx_msg void OnNcRButtonDown(UINT nHitTest, CPoint point);

/*.cpp文件*/

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_NCLBUTTONDBLCLK()
ON_WM_NCLBUTTONDOWN()
ON_WM_NCRBUTTONDOWN()
END_MESSAGE_MAP()

/*

/*
-----功能:使MFC对话框不响应标题栏双击
-----注意:在CWnd::OnNcLButtonDblClk(nHitTest, point)使用时,不
能用CMainFrame::OnNcLButtonDblClk(nHitTest, point),
不然菜单就无法使用了。
*/
void CMainFrame::OnNcLButtonDblClk( UINT nHitTest, CPoint point )
{
if(nHitTest == HTCAPTION && g_bTK) // 为标题栏的双击
return;

CWnd::OnNcLButtonDblClk(nHitTest, point);
}

/*
-----功能:使标题栏的窗体不能被鼠标拖动,固定在当前屏幕中的位置:
-----注意:在CWnd::OnNcLButtonDown(nHitTest, point)使用时,不
能用CMainFrame::OnNcLButtonDown(nHitTest, point),
不然菜单就无法使用了。
*/
void CMainFrame::OnNcLButtonDown(UINT nHitTest, CPoint point)
{
if(nHitTest==HTCAPTION && g_bTK)
return;

CWnd::OnNcLButtonDown(nHitTest, point);
}

/*
-----功能:屏蔽在标题栏点击鼠标右键事件。
-----注意:在CWnd::OnNcRButtonDown(nHitTest, point);使用时,不
能用CMainFrame::OnNcRButtonDown(nHitTest, point),
不然菜单就无法使用了。
*/
void CMainFrame::OnNcRButtonDown(UINT nHitTest, CPoint point)
{
if(nHitTest==HTCAPTION && g_bTK)
return;

CWnd::OnNcRButtonDown(nHitTest, point);
}


借鉴:http://www.cppblog.com/wbscut/archive/2007/06/3/25477.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: