怎么改变菜单栏在框架中的位置?

时间:2021-01-09 10:53:30
CFrameWnd的SetMenu默认就是把菜单栏放在工具栏上面、标题栏下面,怎么把这个菜单栏放到工具栏的下面?

12 个解决方案

#1


CMFCMenuBar, 然后设置停靠位置就好了
老版本的编译器可能没有 

#2


必须使用CMFCMenubar

#3


引用 2 楼 worldy 的回复:
必须使用CMFCMenubar

我们用的vs2005没有这个怎么办?

#4


引用 1 楼 zzz3265 的回复:
CMFCMenuBar, 然后设置停靠位置就好了
老版本的编译器可能没有 

vs2005没有怎么办?

#5


到网上找找下一个, 有时间可以自己弄一个也可以
比如自己建立一个对话框bar, 然后设置这个bar的菜单就好了,

#6


引用 5 楼 zzz3265 的回复:
到网上找找下一个, 有时间可以自己弄一个也可以
比如自己建立一个对话框bar, 然后设置这个bar的菜单就好了,

建对话框bar的话,这个bar的必然是子窗口(父窗口是frame),这时候这个bar就不能设置菜单了。因为
The window is redrawn to reflect the menu change. A menu can be assigned to any window that is  not a child window.

#7


m_wndMainMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndMainToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndStatToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMainMenuBar);
DockPane(&m_wndStatToolBar);
DockPaneLeftOf(&m_wndMainToolBar, &m_wndStatToolBar);
定义
CTMSSMenuBar m_wndMainMenuBar; // 主菜单
CTMSSToolBar m_wndMainToolBar; // 主工具栏
CTMSSToolBar m_wndStatToolBar; // 统计工具栏
位置自己调~~~

#8


引用 7 楼 zhouxiaofeng1021 的回复:
m_wndMainMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndMainToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndStatToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMainMenuBar);
DockPane(&m_wndStatToolBar);
DockPaneLeftOf(&m_wndMainToolBar, &m_wndStatToolBar);
定义
CTMSSMenuBar m_wndMainMenuBar; // 主菜单
CTMSSToolBar m_wndMainToolBar; // 主工具栏
CTMSSToolBar m_wndStatToolBar; // 统计工具栏
位置自己调~~~

你这不是vs2005吧

#9


那你再创建一个工具栏,来模拟菜单栏好了~

#10


引用 4 楼 iloveiverson 的回复:
Quote: 引用 1 楼 zzz3265 的回复:

CMFCMenuBar, 然后设置停靠位置就好了
老版本的编译器可能没有 

vs2005没有怎么办?


不要抱残守旧,起码升级的2008+sp1,就什么多有

#11


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复多日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法

#12


其实就是一个纯文字的工具栏,当鼠标悬浮每个工具栏项的时候,弹出一个菜单可以。

#1


CMFCMenuBar, 然后设置停靠位置就好了
老版本的编译器可能没有 

#2


必须使用CMFCMenubar

#3


引用 2 楼 worldy 的回复:
必须使用CMFCMenubar

我们用的vs2005没有这个怎么办?

#4


引用 1 楼 zzz3265 的回复:
CMFCMenuBar, 然后设置停靠位置就好了
老版本的编译器可能没有 

vs2005没有怎么办?

#5


到网上找找下一个, 有时间可以自己弄一个也可以
比如自己建立一个对话框bar, 然后设置这个bar的菜单就好了,

#6


引用 5 楼 zzz3265 的回复:
到网上找找下一个, 有时间可以自己弄一个也可以
比如自己建立一个对话框bar, 然后设置这个bar的菜单就好了,

建对话框bar的话,这个bar的必然是子窗口(父窗口是frame),这时候这个bar就不能设置菜单了。因为
The window is redrawn to reflect the menu change. A menu can be assigned to any window that is  not a child window.

#7


m_wndMainMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndMainToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndStatToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMainMenuBar);
DockPane(&m_wndStatToolBar);
DockPaneLeftOf(&m_wndMainToolBar, &m_wndStatToolBar);
定义
CTMSSMenuBar m_wndMainMenuBar; // 主菜单
CTMSSToolBar m_wndMainToolBar; // 主工具栏
CTMSSToolBar m_wndStatToolBar; // 统计工具栏
位置自己调~~~

#8


引用 7 楼 zhouxiaofeng1021 的回复:
m_wndMainMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndMainToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndStatToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMainMenuBar);
DockPane(&m_wndStatToolBar);
DockPaneLeftOf(&m_wndMainToolBar, &m_wndStatToolBar);
定义
CTMSSMenuBar m_wndMainMenuBar; // 主菜单
CTMSSToolBar m_wndMainToolBar; // 主工具栏
CTMSSToolBar m_wndStatToolBar; // 统计工具栏
位置自己调~~~

你这不是vs2005吧

#9


那你再创建一个工具栏,来模拟菜单栏好了~

#10


引用 4 楼 iloveiverson 的回复:
Quote: 引用 1 楼 zzz3265 的回复:

CMFCMenuBar, 然后设置停靠位置就好了
老版本的编译器可能没有 

vs2005没有怎么办?


不要抱残守旧,起码升级的2008+sp1,就什么多有

#11


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复多日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法

#12


其实就是一个纯文字的工具栏,当鼠标悬浮每个工具栏项的时候,弹出一个菜单可以。