【MFC】对话框节点属性:Condition(条件)

--

前言

本文介绍对话框节点属性中的Condition(条件),同时给出相关示例便于理解。


目录

  • [1 位置](#1 位置)
  • [2 详解](#2 详解)
  • [3 示例](#3 示例)

1 位置

首先介绍一下这个属性在哪里。

  1. 在资源视图中双击对话框节点,打开该对话框;
  2. 鼠标右键对话框节点,单击属性
  3. 此时在属性对话框中就可以看到该属性了;

2 详解

  • 属性名: 条件 (Condition)
  • 详解: 这个属性直接对应资源脚本文件 (.rc) 中的预处理指令。当你设置条件后,Visual Studio 会在 .rc 文件中该资源定义的周围添加 #ifdef, #ifndef, #endif 等条件编译指令。
  • 作用
    1. 只有在满足设定的"条件"(即该宏被定义)时,该资源才会被编译并包含到最终的程序中。
    2. 如果不满足条件(即该宏未被定义),那么在编译资源时,该资源会被完全排除。最终生成的 .exe 或 .dll 文件中根本不会存在这个资源,试图用 FindResource 或 LoadDialog 等函数去加载它都会失败。
    3. 这是一个编译期的特性,而非运行期的特性。 它不是在程序运行时决定是否显示一个控件,而是在编译程序时决定是否将这个资源"创造"出来。
  • 语法格式
    • MY_FEATURE: 如果宏 MY_FEATURE 被定义了(不管其值为多少),则包含该资源。

3 示例

  1. 主程序中添加加载资源的代码,用于判断是否正常加载对话框资源;
  2. 资源编译器的预处理器定义中添加测试使用的宏(随便定义,我这里加的是CONDITION1CONDITION2=0CONDITION3=1);
    注意是资源编译器中的预处理器定义,不是C++编译器,这是两个不同的配置;
  3. 条件及测试结果;
    • 条件:CONDITION

    • 条件:CONDITION1

    • 条件:CONDITION2

    • 条件:CONDITION3

相关推荐
雾岛听蓝14 小时前
C++11 列表初始化与右值引用核心解析
开发语言·c++·经验分享
痴儿哈哈14 小时前
C++与硬件交互编程
开发语言·c++·算法
闻缺陷则喜何志丹15 小时前
【栈 递归】P8650 [蓝桥杯 2017 省 A] 正则问题|普及+
c++·数学·蓝桥杯·递归·
苏宸啊15 小时前
vecto底层模拟实现
c++
一切尽在,你来15 小时前
C++多线程教程-1.2.2 C++标准库并发组件的设计理念
开发语言·c++
m0_5613596715 小时前
代码热更新技术
开发语言·c++·算法
兩尛15 小时前
c++知识点1
java·开发语言·c++
冉佳驹15 小时前
C++11 ——— 列表初始化、移动语义、可变参数模板、lamdba表达式、function包装器和bind包装器
c++·可变参数模板·移动构造·移动赋值·function包装器·bind包装器·lamdba表达式
xu_yule15 小时前
算法基础—组合数学
c++·算法
Tansmjs16 小时前
C++中的工厂模式变体
开发语言·c++·算法