【发布时间】:2011-01-21 16:50:10
【问题描述】:
我制作了一个 MFC 应用程序,现在我想在进行复制操作时关闭窗口的关闭按钮。我用这段代码成功地做到了:
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:'initializing':无法从'HMENU'转换为'CMenu *'。我敢肯定这是一个简单的问题,但我是初学者,所以请帮忙,但我无法弄清楚我在做什么!
提前致谢!
坎皮
更新: 我试过这种方式,几乎可以工作。关闭“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 );
}
【问题讨论】: