win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数

  1. 菜单项的修改:
    1. 在程序运行中可以动态修改菜单性,包括添加、删除和修改操作。
    2. 使用几个API来进行操作,这个可以先进行略过,需要时阅读有关书籍即可。
  2. 使用系统菜单:
    1. 系统菜单的介绍:如下就是系统菜单。
      win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
    2. 系统菜单的创建:
      WM_CREATE是窗口创建CreateWindow时,系统给消息处理程序发送的消息,每次窗口创建,有且只有1个WM_CREATE消息,所以只运行1次,可以在这里初始化滚动条,获取字体宽度、高度,创建子窗口、控件等等。
      win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
    3. 系统命令的处理:简单的来进行命令处理。
      win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
  3. 右键弹出菜单:
    1. 我们的目标是:在客户区按下右键时,鼠标右上角会弹出系统菜单。win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
    2. 所以该程序分解为三步:检测按下右键、检测鼠标坐标、在该坐标处弹出菜单。
    3. 代码解释:可以看出x,y坐标,有关内容看详解就好:win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
  4. 菜单状态的检测和设置:
    1. 对菜单项的状态进行设置的原因:比如,粘贴版中没有数据时,“粘贴”是灰色的;窗口中没有被选中的字符串时,“拷贝”菜单也应该是绘画的,这样可以给使用者一个善意的提醒。同时,对菜单的状态也常常需要检测,看看菜单项的状态一遍进行下一步操作。
    2. 菜单项状态的检测:win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
    3. 菜单项的设置状态函数:存在三种,分别是 菜单项的[禁用,灰化等]、菜单项对号(非互斥)、菜单项的圆圈(互斥)win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
      1. EnableMenuItem 函数:
        win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
      2. CheckMenuItem 函数: 对号非互斥操作
        win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
      3. CheckMenuRadioItem 函数:圆圈互斥
        win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
    4. 代码解读:
      win32 5.1 菜单的修改、使用系统菜单、右键弹出菜单、菜单状态的检测和设置、其他菜单函数
  5. 其他菜单函数:
    1. 菜单不一定非要在资源文件中定义,在程序中也可以用代码来建立菜单,不过比较麻烦。
    2. 使用菜单后涉及清除问题,与窗口相连的菜单句柄在窗口摧毁时自动由Windows系统释放,不需要手工操作,但没有与窗口相连的菜单就要由程序自己释放出来,使用 DestoryMenu,比如没有与窗口相连而仅用 TrackPopupMenu弹出的菜单句柄。