我做了一个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