我自己创建了一个工程。定义了菜单和工具栏,为了使菜单美观,使用《Visual C++ 从入门到精通》第20章图书管理系统中的方法将工具栏正确显示,但是使用自定义菜单类优化显示菜单出现问题。
1:添加代码方法
a:将第20章图书管理系统的源代码文件MyCoolMenu.cpp和MyCoolMenu.h加入到我的工程中,修改包含的头文件和theApp类为CMyDlg声明
b:在CMyDlg添加CMyCoolMenu m_menu成员。在OnInitDialog中添加代码m_menu.AttachMenu处理。
c:.rc文件中关于菜单定义如下:
IDR_MENU_MAIN MENU DISCARDABLE
BEGIN
POPUP "测试设置管理 "
BEGIN
MENUITEM "被测设备设置", ID_MENU_SETDEVICE1
MENUITEM "陪测设备设置", ID_MENU_SETDEVICE2
MENUITEM "开始测试", ID_MENU_START
MENUITEM "暂停测试", ID_MENU_SUSPEND
MENUITEM "停止测试", ID_MENU_STOP
MENUITEM "退出系统", ID_MENU_EXITSYS
END
POPUP "数据管理 "
BEGIN
MENUITEM "导出测试用例", ID_MENU_OUTPUTDATA
MENUITEM "测试用例修改", ID_MENU_INPUTDATA
END
POPUP "结果查询 "
BEGIN
MENUITEM "测试结果查询", ID_MENU_REPORT
END
POPUP "帮助 "
BEGIN
MENUITEM "关于", ID_MENU_ABOUT
END
END
2:执行效果:
a:若不在OnInitDialog中添加代码m_menu.AttachMenu处理菜单显示正常。
b:添加m_menu.AttachMenu处理后出现问题:显示的菜单每个顶层菜单第一个字才显示,其余字被后面的菜单字符覆盖。书上虽然有关于MyCoolMenu.cpp代码注释说明,但是还是不明白,没有找到原因。错误显示效果如图: