迷惑:有关vs2008的MFC单文档菜单操作

时间:2021-04-13 00:52:53

    创建一个MFC单文档视图工程,显示样式是“MFC标准样式”。
    问题描述:我在   CMainFrame::OnCreate   return之前加入:

GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);  以实现标记菜单项的功能,可是运行时显示非

法操作!百度加调试后知道,原因是此时菜单还创建!

   1、 那菜单是什么时候、哪个函数创建的呢?我想实现对菜单的操作,比如:隐藏菜单在哪操作?在菜单项前加个图标在哪加?

   2、还有这段:CMenu menu;
       menu.LoadMenu(IDR_MAINFRAME);
       SetMenu(&menu);
       menu.Detach();
我也是加在   CMainFrame::OnCreate   return之前的,在这句加入之前,显示为:


       迷惑:有关vs2008的MFC单文档菜单操作


    加入之后:
             迷惑:有关vs2008的MFC单文档菜单操作


这个怎么解释呢??  哪位高手路过帮帮忙哈!
      

16 个解决方案

#1


看不到图片?

#2


你用的VS2008SP1?

#3


引用 1 楼 liyu1128 的回复:
看不到图片?


刚刚刷新了。。。。

#4


引用 2 楼 visualeleven 的回复:
你用的VS2008SP1?


恩,是的。。。

#5


顶起,大侠们帮帮忙哈。。。

#6


引用 4 楼 p40614021 的回复:
引用 2 楼 visualeleven 的回复:
你用的VS2008SP1?


恩,是的。。。

VS2008SP1默认建的SDI/MDI都是BCG的样式的,和之前的不一样的。你上面的GetMenu()返回的值都是无效的,不能这样做的

#7


还是看不见图片

#8


引用 7 楼 stallion5632 的回复:
还是看不见图片


看不到呀?!拿我描述下:加了之后,窗口的显示是:
             标题
             菜单(新加的)
             菜单(未加之前就有的菜单)
             工具
             客户区

#9


引用 6 楼 visualeleven 的回复:
引用 4 楼 p40614021 的回复:
引用 2 楼 visualeleven 的回复:
你用的VS2008SP1?


恩,是的。。。

VS2008SP1默认建的SDI/MDI都是BCG的样式的,和之前的不一样的。你上面的GetMenu()返回的值都是无效的,不能这样做的


哦,“BCG的样式”是个什么样式啊?可以稍微介绍下么?那这个样式下就不能使用GetMenu()来进行菜单操作么??(应该可以吧?是不是位置该放在哪的问题?)  谢谢部长不吝赐教哈!

#10


没人知道么??

#11


看看我发过的一个帖的,你看看

#12


引用 11 楼 lznj06 的回复:
看看我发过的一个帖的,你看看

我的问题跟你帖子中要问的一样哦!呵呵  我知道建工程时用“经典菜单”可以,但是为什么用“2010默认菜

单”就不行呢!??可有弄明白的。。。

#13


微软购买了BCG的界面工具包,并以附带源码的形式加入了VS2008 SP1。
VS2008 SP1和VS2010建立的新的界面都是由CMFCMenuBar进行管理了,其实是一种Toolbar,所以不能用GetMenu访问。

#14


可以看看:http://blog.csdn.net/clever101/article/details/5795520
http://msdn.microsoft.com/en-us/library/bb983676.aspx

#15


另外难不成你贴的是你机器上的本地图片?别的电脑可访问不了你的硬盘,请上传到相册里去。

#16


Bokutake:

多谢赐教哈!呵呵 结贴~

#1


看不到图片?

#2


你用的VS2008SP1?

#3


引用 1 楼 liyu1128 的回复:
看不到图片?


刚刚刷新了。。。。

#4


引用 2 楼 visualeleven 的回复:
你用的VS2008SP1?


恩,是的。。。

#5


顶起,大侠们帮帮忙哈。。。

#6


引用 4 楼 p40614021 的回复:
引用 2 楼 visualeleven 的回复:
你用的VS2008SP1?


恩,是的。。。

VS2008SP1默认建的SDI/MDI都是BCG的样式的,和之前的不一样的。你上面的GetMenu()返回的值都是无效的,不能这样做的

#7


还是看不见图片

#8


引用 7 楼 stallion5632 的回复:
还是看不见图片


看不到呀?!拿我描述下:加了之后,窗口的显示是:
             标题
             菜单(新加的)
             菜单(未加之前就有的菜单)
             工具
             客户区

#9


引用 6 楼 visualeleven 的回复:
引用 4 楼 p40614021 的回复:
引用 2 楼 visualeleven 的回复:
你用的VS2008SP1?


恩,是的。。。

VS2008SP1默认建的SDI/MDI都是BCG的样式的,和之前的不一样的。你上面的GetMenu()返回的值都是无效的,不能这样做的


哦,“BCG的样式”是个什么样式啊?可以稍微介绍下么?那这个样式下就不能使用GetMenu()来进行菜单操作么??(应该可以吧?是不是位置该放在哪的问题?)  谢谢部长不吝赐教哈!

#10


没人知道么??

#11


看看我发过的一个帖的,你看看

#12


引用 11 楼 lznj06 的回复:
看看我发过的一个帖的,你看看

我的问题跟你帖子中要问的一样哦!呵呵  我知道建工程时用“经典菜单”可以,但是为什么用“2010默认菜

单”就不行呢!??可有弄明白的。。。

#13


微软购买了BCG的界面工具包,并以附带源码的形式加入了VS2008 SP1。
VS2008 SP1和VS2010建立的新的界面都是由CMFCMenuBar进行管理了,其实是一种Toolbar,所以不能用GetMenu访问。

#14


可以看看:http://blog.csdn.net/clever101/article/details/5795520
http://msdn.microsoft.com/en-us/library/bb983676.aspx

#15


另外难不成你贴的是你机器上的本地图片?别的电脑可访问不了你的硬盘,请上传到相册里去。

#16


Bokutake:

多谢赐教哈!呵呵 结贴~