我无法理解视图菜单如何在代码方面关闭标准工具栏。
如果我理解正确,标准工具栏在.rc文件中定义如下:
IDR_MAINFRAME TOOLBAR 16, 15
BEGIN
BUTTON ID_FILE_NEW
BUTTON ID_FILE_OPEN
BUTTON ID_FILE_SAVE
SEPARATOR
BUTTON ID_EDIT_CUT
BUTTON ID_EDIT_COPY
BUTTON ID_EDIT_PASTE
SEPARATOR
BUTTON ID_FILE_PRINT
BUTTON ID_APP_ABOUT
END
同样,允许您打开和关闭标准工具栏的“视图菜单”定义如下:
IDR_MAINFRAME MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&New\tCtrl+N", ID_FILE_NEW
MENUITEM "&Open...\tCtrl+O", ID_FILE_OPEN
MENUITEM "&Close", ID_FILE_CLOSE
MENUITEM SEPARATOR
MENUITEM "P&rint Setup...", ID_FILE_PRINT_SETUP
MENUITEM SEPARATOR
MENUITEM "Recent File", ID_FILE_MRU_FILE1,GRAYED
MENUITEM SEPARATOR
MENUITEM "E&xit", ID_APP_EXIT
END
POPUP "&View"
BEGIN
POPUP "&Toolbars and Docking Windows"
BEGIN
MENUITEM "<placeholder>", ID_VIEW_TOOLBAR
END
MENUITEM "&Status Bar", ID_VIEW_STATUS_BAR
POPUP "&Application Look"
BEGIN
MENUITEM "Windows &2000", ID_VIEW_APPLOOK_WIN_2000
MENUITEM "Office &XP", ID_VIEW_APPLOOK_OFF_XP
MENUITEM "&Windows XP", ID_VIEW_APPLOOK_WIN_XP
MENUITEM "Office 200&3", ID_VIEW_APPLOOK_OFF_2003
MENUITEM "Visual Studio 200&5", ID_VIEW_APPLOOK_VS_2005
MENUITEM "Visual Studio 200&8", ID_VIEW_APPLOOK_VS_2008
POPUP "Office 200&7"
BEGIN
MENUITEM "&Blue Style", ID_VIEW_APPLOOK_OFF_2007_BLUE
MENUITEM "B&lack Style", ID_VIEW_APPLOOK_OFF_2007_BLACK
MENUITEM "&Silver Style", ID_VIEW_APPLOOK_OFF_2007_SILVER
MENUITEM "&Aqua Style", ID_VIEW_APPLOOK_OFF_2007_AQUA
END
END
END
POPUP "&Help"
BEGIN
MENUITEM "&About Emergence...", ID_APP_ABOUT
END
END
现在我的理由是这样....为了让您可以打开和关闭标准工具栏的MENUITEM工作,ID_VIEW_TOOLBAR必须以某种方式引用工具栏定义本身。我搜索了整个项目,无处可查找ID_VIEW_TOOLBAR与标准工具栏定义相关联的位置。肯定有一些关系将ID_VIEW_TOOLBAR与IDR_MAINFRAME TOOLBAR 16,15的定义联系起来,以便打开和关闭它?
如果没有,您能否解释一下ID_VIEW_TOOLBAR如何关闭标准工具栏?
感谢您的时间。
答案 0 :(得分:3)
ID_VIEW_TOOLBAR
是标准命令ID。 TN022: Standard Commands Implementation
解释了如何处理这些问题。如果是ID_VIEW_TOOLBAR
:
ID_VIEW_TOOLBAR
打开和关闭工具栏CFrameWnd处理此命令和update-command UI处理程序以切换工具栏的可见状态。工具栏必须是具有子窗口ID
AFX_IDW_TOOLBAR
的框架的子窗口。命令处理程序实际上切换工具栏窗口的可见性。CFrameWnd::RecalcLayout
用于重绘框架窗口,工具栏处于新状态。更新命令UI处理程序在工具栏可见时检查菜单项。不建议自定义此命令处理程序。如果要添加其他工具栏,则需要克隆和修改此命令的命令处理程序和update-command UI处理程序。
您的CMainFrame::OnCreate
覆盖中已建立连接。它调用m_wndToolBar.CreateEx
,省略了最终的可选参数:控件ID AFX_IDW_TOOLBAR
。然后它会调用m_wndToolBar.LoadToolBar(IDR_MAINFRAME)
。这会构建标识为TOOLBAR
的{{1}}资源的工具栏。