工具栏的标题以及菜单项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);
菜单如下所示:
你知道如何正确设置吗?
答案 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处理程序(如果存在)。
答案 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之后开始工作。