很奇怪,所有自建的菜单项都是灰的。下面的弹出菜单 1 2 3 都是灰的。为什么啊?
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
if(m_Menu.m_hMenu==NULL)
{
CMenu temp;
temp.CreateMenu();
temp.AppendMenu(MF_STRING,2000,"1");
temp.AppendMenu(MF_STRING,2001,"2");
temp.AppendMenu(MF_STRING,2002,"3"); m_Menu.CreateMenu();
m_Menu.AppendMenu(MF_POPUP,(UINT)temp.m_hMenu,"1"); temp.Detach();
}
cs.hMenu=m_Menu.m_hMenu;
return TRUE;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
if(m_Menu.m_hMenu==NULL)
{
CMenu temp;
temp.CreateMenu();
temp.AppendMenu(MF_STRING,2000,"1");
temp.AppendMenu(MF_STRING,2001,"2");
temp.AppendMenu(MF_STRING,2002,"3"); m_Menu.CreateMenu();
m_Menu.AppendMenu(MF_POPUP,(UINT)temp.m_hMenu,"1"); temp.Detach();
}
cs.hMenu=m_Menu.m_hMenu;
return TRUE;
}
解决方案 »
- WebBrowser控件的WindowSetTop等等set的事件都什么时候被触发?
- 属性表单的问题
- 一个困扰我很久关于ATL控件的问题
- 奇怪,为什么CListCtr的LVN_ITEMCHANGED会发两次
- 求助,#ifndef 不起作用!!!
- 高手快回答呀不知道怎么处理这样的问题呀!!
- 看看这代码有什么问题—关于socket关闭不了请问大虾!得到答案就散分——说到做到!
- 要在工程中使用DAO,工程需要做何设置?具体使用DAO是一个什么过程呢?
- **********求教如何在VC中调用zip和unzip功能来压缩文件和解压缩文件
- 大家都来捉虫啊!
- 请教如何获得dll文件的当前目录?给分100,在线等待!
- 我建的对话框类为什么在ClassWizard里看不到?
1. 针对你增加的菜单项写事件;
2. 你可将框架的成员变量m_bAutoMenuEnable设置成FALSE;
这两种方法我都试过了,行的通哦!
经过添加消息处理函数,菜单可用了。
下一个问题,系统怎么知道存在消息处理函数呢?他根据什么来判断菜单是应该黑的还是灰的?我试了一下,加了ON_COMMAND(...)之后,相应的菜单项就可用了,但在显示这个菜单的时候并不会调用这个函数。到这一步为止,我加与不加ON_COMMAND(...)的两个程序所执行的代码都是一样的。而这时菜单上有消息处理的项就已经时可用的了,那系统是从哪知道的呢?