--
前言
本文介绍对话框节点属性中的Condition(条件),同时给出相关示例便于理解。
目录
- [1 位置](#1 位置)
- [2 详解](#2 详解)
- [3 示例](#3 示例)
1 位置
首先介绍一下这个属性在哪里。
- 在资源视图中双击对话框节点,打开该对话框;
- 鼠标右键对话框节点,单击属性;
- 此时在属性对话框中就可以看到该属性了;
2 详解
- 属性名: 条件 (Condition)
- 详解: 这个属性直接对应资源脚本文件 (.rc) 中的预处理指令。当你设置条件后,Visual Studio 会在 .rc 文件中该资源定义的周围添加 #ifdef, #ifndef, #endif 等条件编译指令。
- 作用 :
- 只有在满足设定的"条件"(即该宏被定义)时,该资源才会被编译并包含到最终的程序中。
- 如果不满足条件(即该宏未被定义),那么在编译资源时,该资源会被完全排除。最终生成的 .exe 或 .dll 文件中根本不会存在这个资源,试图用 FindResource 或 LoadDialog 等函数去加载它都会失败。
- 这是一个编译期的特性,而非运行期的特性。 它不是在程序运行时决定是否显示一个控件,而是在编译程序时决定是否将这个资源"创造"出来。
- 语法格式 :
- MY_FEATURE: 如果宏 MY_FEATURE 被定义了(不管其值为多少),则包含该资源。
3 示例
- 主程序中添加加载资源的代码,用于判断是否正常加载对话框资源;
- 资源编译器的预处理器定义中添加测试使用的宏(随便定义,我这里加的是
CONDITION1
、CONDITION2=0
、CONDITION3=1
);
注意是资源编译器中的预处理器定义,不是C++编译器,这是两个不同的配置;
- 条件及测试结果;
- 条件:CONDITION
- 条件:CONDITION1
- 条件:CONDITION2
- 条件:CONDITION3