星期三, 7月 18, 2007

[MFC] Disable 關閉按鈕

有三種方法
1. 重載 CMainFrame::PreTranslateMessage 如下
缺點:按鈕還是顯示Enable
優點:可屏蔽雙擊標題列

if(pMsg->hwnd == this->m_hWnd )
{
if (pMsg->message == WM_SYSCOMMAND)
{
if (pMsg->wParam == SC_MINIMIZE)
return true;
if (pMsg->wParam == SC_CLOSE)
return true;
}
if (pMsg->message == WM_NCLBUTTONDBLCLK)
return true;
if (pMsg->message == WM_NCLBUTTONDOWN)
{
if (pMsg->wParam == HTMINBUTTON)
return true;
if (pMsg->wParam == HTSIZE)
return true;
if (pMsg->wParam == HTCLOSE)
return true;
}
}

2.加在初始化函式
(m_pMainWnd->GetSystemMenu(FALSE))->RemoveMenu(SC_CLOSE,MF_BYCOMMAND);
優點:簡單, 標題列按鈕會顯示Disable
缺點: 只能屏蔽系統選單及標題列
3.::SetClassLong(m_pMainWnd->GetSafeHwnd(),GCL_STYLE,::GetClassLong(m_pMainWnd->GetSafeHwnd(),GCL_STYLE) |CS_NOCLOSE);
優點:簡單, 標題列按鈕會顯示Disable
缺點:系統選單不會消失

沒有留言: