win32 5.4 对话框的资源定义

  1. 对话框的格式是:(其中 BEGIN END 用花括号 { } 来代替也行)win32 5.4 对话框的资源定义
  2. 其可选属性为(大体了解一下就好):win32 5.4 对话框的资源定义
  3. 代码解读:
    win32 5.4 对话框的资源定义
    1. 可以看出,其对话框中定义了四组控件,其分别是:图标、文本、按钮和一条横线。
    2. 其中定义的 第三个是 控件的ID,我们在 对话框过程需要处理的:
      1. 因为除了按钮,其余三个都是静态的,不会发送和接收消息,所以我们不需要控件ID,将其设置为 -1。
      2. 但是按钮我们定义为 IDOK,其作用是:当点击这个,会发送 WM_COMMAND,其另外的一个参数就是 控件的ID。所以,我们双判断就可以判断出用户点击了哪一个空间,然后对其做出处理,如下代码解读:win32 5.4 对话框的资源定义
      3. 控件ID中有两个特殊ID,其是 IDOK和IDCANCEL,其在 resource.h 中定义的值为 1 和 2:
        1. IDOK 默认是 “确定”,当然其名字可以任何对用,当焦点没有停留在其他按钮上,在任何地方按下回车,相当于按下了IDOK这个按钮(如果有),所以,在该程序中,按下 回车,则系统就会退出。
        2. IDCANCEL 相当于退出,如上一样,如果按下 ESC键,就相当于调用这个按钮。
  4. Tab停留位和组:
    1. 输入焦点 初步介绍:
      1. 对话框中可以定义多个子窗口控件,有的子窗口控件可以用于输入焦点(如按钮、文本框、组合框等),有的则不等。(如图标和文本等)
      2. 当对话框中有多个允许用于输入焦点的子窗口控件时(有WS_TABSTOP风格),用户可以用 Tab键将 输入焦点切换到下一个有WS_TABSTOP风格的子窗口空间上,也可以 Shift+Tab切换到上一个。
      3. Tab键切换的顺序就叫做Tab停留位。
    2. Tab停留位 介绍:
      1. Tab停留位并不是根据子窗口空间的坐标位置自动排序的,而是按照 子窗口控件 在资源脚本文件中的定义顺序来排列。
      2. 所以读者在定义的时候根据子窗口空间的位置适当排列语句的先后,以免按动Tabj键切换的时候焦点上下左右无规则的跳来跳去。
      3. 如果使用可视化的资源编辑器,那么菜单中会有“Tab停留位”菜单项,在编辑完成后也要进行这个菜单项设置,资源编辑器会根据rc文件中定义语句的先后顺序。
    3. “组”的介绍
      1. 对话框中往往有一些排列在一起的同类子窗口控件,如 几个菜单按钮,几个单选钮之间的选中标记往往是互斥的。
      2. 在对话框的其他地方可能又有一组互斥的单选钮用来代表其他功能。
      3. 对话框中规定所有的单选钮都是互斥的显然不现实,解决的方法就是将不同的子窗口控件“分组”,这就是“组”的含义。
      4. 使用中可以选择一些子窗口控件定义WS_GROUP属性,两个WS_GROUP属性的子窗口控件之间的所有子窗口控件同属同一组。