您的位置:首页 > 其它

MFC单文档生成多个CMFCToolbar时需要解决的问题

2018-03-15 15:50 344 查看
1. 单文档默认生成的工具栏只有一个,但很多时候我们需要添加多个工具栏,比如:



m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndFileToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndCalibrateToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndDrawToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndFileToolBar);
DockPane(&m_wndCalibrateToolBar);
DockPane(&m_wndDrawToolBar);

这不是我们想要的样子,我们希望能把这三个工具栏并排在一起这样可以节省很多空间,比如:



这时候我们需要改变下代码
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar);
DockPane(&m_wndDrawToolBar);
DockPaneLeftOf(&m_wndCalibrateToolBar, &m_wndDrawToolBar);
DockPaneLeftOf(&m_wndFileToolBar, &m_wndCalibrateToolBar);

先让最后一个绘图工具栏DockPane(&m_wndDrawToolBar);然后我们调用函数DockPaneLeftOf()依次往m_wndDrawToolBar的左边停靠

2.  系统默认生成的工具栏只有一个,所以文件菜单里的视图->工具栏和停靠窗口 的子菜单也只有系统默认生成的一个菜单项,就算我们的所有工具栏都显示上去了但是系统不会自动给我们添加到子菜单项,比如:



这时候就需要我们在创建工具栏时做处理:







看到有什么不同了吗,没错就是给他们加上一个ID,否则的话三个工具栏都是使用相同的ID所以显示不出来,因为三个相同的ID都占用了同一个子菜单项,看看修改后的样子:



3. 如果你觉得不需要 文件菜单里的视图->工具栏和停靠窗口 的子菜单里的 自定义... 项可以把
EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR);

改为
EnablePaneMenu(TRUE, 0, strCustomize, ID_VIEW_TOOLBAR);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐