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

MFC - How to set the toolbar title?

工具栏的标题以及菜单项 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);

菜单如下所示:

你知道如何正确设置吗?

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

中设置 ID 的菜单文本

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

参考 MFC TN021: Command and Message Routing

为了解决这个问题,我通过明确指定工具栏的 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 后我开始使用它了。