论坛首页 综合技术论坛

玩转菜单-菜单资源

浏览 2658 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-02-08  
C++

菜单资源

    WINDOWS程序的菜单通常编译前定义在资源文件中,程序员可使用VC自带的资源编辑器可视化地编辑菜单资源,在资源文件中自动生成相关脚本,对于WIN32汇编程序员,最好能看懂这些自动生成的脚本,VC程序员在完成一些特殊程序时也需要亲自看看这些脚本文件。笔者用VC向导生成一个空的单文档程序,下面是VC自动生成的脚本文件中,我们一起对其中的菜单资源进行分析:
 /////////////////////////////////////////////////////////////////////////////
//
// Menu
//
IDR_MAINFRAME MENU PRELOAD DISCARDABLE
BEGIN
 POPUP "文件(&F)"
 BEGIN
  MENUITEM"新建(&N)\tCtrl+N",               ID_FILE_NEW  
  MENUITEM"打开(&O)...\tCtrl+O",           ID_FILE_OPEN
  MENUITEM"保存(&S)\tCtrl+S",              ID_FILE_SAVE
  MENUITEM"另存为(&A)...",                ID_FILE_SAVE_AS
  MENUITEM SEPARATOR
  MENUITEM"打印(&P)...\tCtrl+P",          ID_FILE_PRINT
  MENUITEM"打印预览(&V)",             ID_FILE_PRINT_PREVIEW
  MENUITEM"打印设置(&R)...",            ID_FILE_PRINT_SETUP
  MENUITEM SEPARATOR
  MENUITEM"最近文件",                ID_FILE_MRU_FILE1,GRAYED
  MENUITEM SEPARATOR
  MENUITEM"退出(&X)",                      ID_APP_EXIT
 END
 POPUP "编辑(&E)"
 BEGIN
  MENUITEM"撤消(&U)\tCtrl+Z",              ID_EDIT_UNDO
  MENUITEM SEPARATOR
  MENUITEM"剪切(&T)\tCtrl+X",               ID_EDIT_CUT
  MENUITEM"复制(&C)\tCtrl+C",              ID_EDIT_COPY
  MENUITEM"粘贴(&P)\tCtrl+V",             ID_EDIT_PASTE
 END
 POPUP "查看(&V)"
 BEGIN
  MENUITEM"工具栏(&T)",                   ID_VIEW_TOOLBAR
  MENUITEM"状态栏(&S)",                ID_VIEW_STATUS_BAR
 END
 POPUP "帮助(&H)"
 BEGIN
  MENUITEM "关于test1(&A)...",         ID_APP_ABOUT
 END
END   
一、菜单项的定义:
1、文字菜单项目的定义
  MENUITEM"新建(&N)\tCtrl+N",               ID_FILE_NEW           
  菜单项的定义方式是:MENUITEM 菜单文字,命令ID,选项列表
选项列表是可选项,也可以不定义。这定义了一个菜单项,显示的名称是新建(&N)Ctrl+N,命令ID是ID_FILE_NEW,没有选项列表,菜单文字定义中的“\t”为什么没显示出来呢?因为\t代表TAB字符,会使其后面的文字右对齐。
  菜单项有以下选项:
  CHECKED:打上选定标志
  GRAYED:灰化
  INACTIVE:禁用
  MENUBREAK或MENUBARBREAK:把这个菜单项和以后的菜单项列到新的列中
  我们把下面这段资源文件用记事本打开,给“新建”加上CHECKED选项,给“最近文件”加上GRAYED,给“打印”然后用VC重新编译运行一下这个程序。
  MENUITEM"新建(&N)\tCtrl+N",               ID_FILE_NEW,CHECKED
  MENUITEM"打开(&O)...\tCtrl+O",           ID_FILE_OPEN
  MENUITEM"保存(&S)\tCtrl+S",              ID_FILE_SAVE
  MENUITEM"另存为(&A)...",                ID_FILE_SAVE_AS
  MENUITEM SEPARATOR
  MENUITEM"打印(&P)...\tCtrl+P",          ID_FILE_PRINT,MENUBREAK
  MENUITEM"打印预览(&V)",             ID_FILE_PRINT_PREVIEW
  MENUITEM"打印设置(&R)...",            ID_FILE_PRINT_SETUP
  MENUITEM SEPARATOR
  MENUITEM"最近文件",                ID_FILE_MRU_FILE1,GRAYED
  MENUITEM SEPARATOR
  MENUITEM"退出(&X)",                      ID_APP_EXIT
  从图5.1可以看出修改后,文件菜单已经按照我们要求的方式变了形。


 
图5.1
2、分隔符的定义
  从图5.1中可以看出最近文件与退出之间有个分隔符,它的定义方式是:
  MENUITEM SEPARATOR
3、弹出菜单项
   POPUP"文件(&F)",

   POPUP"编辑(&E)"
  这些都是弹出菜单项,弹出菜单项的定义方式如下L
   POPUP 菜单文字,选项列表
   BEGIN
      子菜单项定义
   END
  对于弹出菜单项,也可用选项列表,有兴趣的读者用记事本打开资源文件,将 POPUP"编辑(&E)"改为 POPUP"编辑(&E)",GRAYED,用VC重新编译运行一下试试效果吧
二、菜单的定义
   IDR_MAINFRAME MENUPRELOAD DISCARDABLE
  从上面的资源文件中可以看出,VC生成的默认单文档程序中只有一个菜单,菜单ID是IDR_MAINFRAME,菜单的定义方式是:
   菜单IDMENU [DISCARDABLE]
   DISCARDABLE表示菜单不用时从暂时从内存中卸掉。
   PRELOAD 表示预加载该资源
  • 大小: 14.9 KB
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics