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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ilson_/article/details/79568603

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);



猜你喜欢

转载自blog.csdn.net/Ilson_/article/details/79568603