Winapi 工具栏不显示图标

Winapi 工具栏不显示图标,winapi,mfc,mfc-feature-pack,cmfctoolbar,Winapi,Mfc,Mfc Feature Pack,Cmfctoolbar,我一直在尝试将CMFCMenuBar和CMFCToolBar放在一起。为此,CFrameWndEx的OnCreate具有以下代码 if ( !m_wndMenuBar.Create(this) ) { TRACE0("Failed to create menubar\n"); return -1; // fail to create } m_wndMenuBar.SetPaneStyle( m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_

我一直在尝试将CMFCMenuBar和CMFCToolBar放在一起。为此,CFrameWndEx的OnCreate具有以下代码

if ( !m_wndMenuBar.Create(this) ) {
    TRACE0("Failed to create menubar\n");
    return -1;      // fail to create
}
m_wndMenuBar.SetPaneStyle( m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY );
CMFCPopupMenu::SetForceMenuFocus(FALSE);
CList<UINT, UINT>   lstBasicCommands;

lstBasicCommands.AddTail (ID_FILE_NEW);
lstBasicCommands.AddTail (ID_FILE_OPEN);
lstBasicCommands.AddTail (ID_FILE_SAVE);
lstBasicCommands.AddTail (ID_APP_EXIT);
lstBasicCommands.AddTail (ID_APP_ABOUT);

CMFCToolBar::SetBasicCommands (lstBasicCommands);

CMFCToolBarInfo toolBarStruct;
SecureZeroMemory( &toolBarStruct, sizeof(CMFCToolBarInfo) );
toolBarStruct.m_uiMenuResID = IDR_TOOLBAR;
m_wndToolBar.SetMenuSizes( CSize(21,22), CSize(15,16) );
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC ) ||//, CRect(1,1,1,1), theApp.m_bHiColorIcons ? IDR_TOOLBAR_MAIN_256 : IDR_TOOLBAR_MAIN ) ||
    !m_wndToolBar.LoadToolBarEx(IDR_TOOLBAR, toolBarStruct) ) {
    TRACE0("Failed to create toolbar\n");
    return -1;
}

m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockPane(&m_wndMenuBar, CBRS_ALIGN_TOP);
DockPane(&m_wndToolBar);
if(!m_wndMenuBar.Create(this)){
TRACE0(“未能创建菜单栏\n”);
return-1;//创建失败
}
m|wndMenuBar.SetPaneStyle(m|wndMenuBar.GetPaneStyle()| CBRS|U大小|动态| CBRS|U工具提示| CBRS|U飞掠);
CMFCPopupMenu::SetForceMenuFocus(FALSE);
CList基本命令;
lstBasicCommands.AddTail(ID\u文件\u新);
lstBasicCommands.AddTail(ID_文件_打开);
lstBasicCommands.AddTail(ID\u FILE\u SAVE);
lstBasicCommands.AddTail(ID\u APP\u EXIT);
lstBasicCommands.AddTail(ID_APP_ABOUT);
CMFCToolBar::setBasicCommand(lstBasicCommand);
CMFCToolBarInfo工具栏结构;
SecureZeroMemory(&toolBarStruct,sizeof(CMFCToolBarInfo));
TOOLBAR struct.m_uiMenuResID=IDR_TOOLBAR;
设置菜单(CSize(21,22),CSize(15,16));
如果(!m_wndToolBar.CreateEx(此,TBSTYLE_FLAT,WS|u CHILD | WS|u VISIBLE | CBRS|u TOP | CBRS| U GRIPPER | CBRS| U工具提示| CBRS| U FLYBY | CBRS| U SIZE | U DYNAMIC u)|/,CRect(1,1,1,1),app m|m|u bhicolloricons?IDR|U工具栏| IDR|主工具栏||
!m_wndToolBar.LoadToolBarEx(IDR_工具栏,toolBarStruct)){
TRACE0(“未能创建工具栏\n”);
返回-1;
}
m_wndMenuBar.启用对接(CBRS_ALIGN_ANY);
m_wndToolBar.启用对接(CBRS_ALIGN_ANY);
启用对接(CBRS_对齐_任意);
船坞平面(顶部对齐);
码头平面(m_wndToolBar);
显示的结果UI类似于

我的问题有两个方面。 1.为什么工具栏上没有显示任何图标?
2.为什么菜单栏在水平方向上没有占据整个可用空间?

你在IDR\u工具栏资源中有什么?请,每篇文章只提一个问题。您可以完全删除第二个问题,因为它的答案非常简单(“为什么菜单栏不水平地占据整个可用空间?”-“因为它的实现不会跨越整个可用水平空间。”)。在自定义模式下(右键单击菜单栏>自定义),尝试拖动菜单栏菜单的一些菜单项,看看会发生什么。注意:使用鼠标拖动时按Ctrl键。如果您不这样做,应用程序将移动项目而不是复制,并且菜单将不再位于原来的位置。您在IDR_工具栏资源中有什么?请,每篇文章只有一个问题。您可以完全删除第二个问题,因为它的答案非常简单(“为什么菜单栏不水平地占据整个可用空间?”-“因为它的实现不会跨越整个可用水平空间。”)。在自定义模式下(右键单击菜单栏>自定义),尝试拖动菜单栏菜单的一些菜单项,看看会发生什么。注意:使用鼠标拖动时按Ctrl键。如果不这样做,应用程序将移动项目而不是复制,菜单将不再位于原来的位置