MFC - 如何设置工具栏标题?

时间:2015-06-09 09:24:17

标签: visual-c++ mfc

工具栏的标题以及菜单项ID_VIEW_TOOLBAR仍为空。我试图在CMainFrame::OnCreate中设置它:

CString strToolbar;
strToolbar.LoadStringA(IDS_TOOLBAR_STANDARD); // IDS_TOOLBAR_STANDARD = "Standard"
m_wndToolBar.SetWindowText(strToolbar);
DockPane(&m_wndToolBar);
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
EnablePaneMenu(TRUE, ID_ANSICHT_ANPASSEN, "Anpassen", ID_VIEW_TOOLBAR);

菜单如下所示:

Empty ID_VIEW_TOOLBAR title

你知道如何正确设置吗?

2 个答案:

答案 0 :(得分:1)

一般来说,人们不会在运行时更改标准命令的显示文本。在编译时,您可以在in the string table section of the resource editor

中设置ID的菜单文本

如果要在运行时更改菜单文本,可以为ID_VIEW_TOOLBAR添加ON_UPDATE_COMMAND_UI处理程序,并在处理程序内调用CCmdUI :: SetText。当用户单击顶级菜单以显示下拉菜单时,WM_INITMENUPOPUP将发送给菜单的所有者,在本例中为CFrameWnd派生类。然后CFrameWnd :: OnInitMenuPopup遍历每个菜单项并调用更新命令UI处理程序(如果存在)。

参考 MFC TN021: Command and Message Routing

答案 1 :(得分:1)

为了解决这个问题,我通过显式指定工具栏的ID来创建工具栏(而不是使用函数的默认参数)。

    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),
        IDR_MAINFRAME) // <-- Custom ID

在此之后,我可以将工具栏的标题设置为我想要的内容:

m_wndToolBar.SetWindowText(_T("My Toolbar Name");

我在阅读this thread之后开始工作。