我做了一個MFC應用程序,現在我想在我做複製操作時關閉窗口的關閉按鈕。我做了這個代碼全成:如何在MFC應用程序中使用CMenu?
BOOL bEnable = FALSE; // To disable
UINT menuf = bEnable ? (MF_BYCOMMAND) : (MF_BYCOMMAND | MF_GRAYED | MF_DISABLED);
CMenu* pSM = GetSystemMenu( , FALSE);
if (pSM)
{
pSM->EnableMenuItem(SC_CLOSE, menuf);
}
但現在,我計劃在我的線程(UINT CopyThread(LPVOID pParam))我想重新啓用它的結束,但我不能。我早先通過我的線程m_hWnd,現在我不想傳遞給GetSystemMenu函數,但我得到一個編譯器錯誤:錯誤C2440:'初始化':無法從'HMENU'轉換爲'CMenu *'。我相信這是一個簡單的問題,但我是一個初學者,所以請幫助,但我無法弄清楚,我在做什麼工作!
在此先感謝!
kampi
更新: 我試過這種方法,幾乎工作。關閉「X」將再次變黑,但如果我按下它,我的程序將不存在。我做錯了什麼,或者這是因爲別的嗎?
BOOL bEnable = TRUE; // To enable
UINT menuf = bEnable ? (MF_BYCOMMAND) : (MF_BYCOMMAND | MF_GRAYED | MF_DISABLED);
HMENU pSM = ::GetSystemMenu(Test->hWnd, FALSE);
if (pSM)
{
::EnableMenuItem(pSM, SC_CLOSE, menuf);
}
請注意CS_NOCLOSE會影響該過程中該類的_ALL_窗口。這通常不是您的應用程序窗口的問題,但可能是彈出窗口的問題。 – 2010-02-27 01:59:22
謝謝!那就對了。 – minjang 2010-02-27 02:04:48
嗨!我更新了我的帖子。這工作幾乎沒有問題,但重新啓用後按下按鈕,它不會退出:(你知道爲什麼嗎? – kampi 2010-02-27 02:42:11