Windows MFC添加类,变量,类导向

Visual Studio 的"类向导(Class Wizard)"------用于在 MFC(Microsoft Foundation Classes)项目中管理控件、变量、类之间的绑定关系的工具。我来帮你理清这三者的区别与联系。


🧩 一、三种操作的区别

功能 用途 结果
添加类(Add Class) 为对话框、对话框页、控件模板或自定义逻辑创建一个新的C++类 生成一个新的 .h.cpp 文件,并自动注册到项目中
添加变量(Add Variable) 将资源(如控件)与代码成员变量绑定起来 在类头文件中生成一个成员变量(如 CButton m_btnTest;)并自动完成 DDX/DDV 绑定
类向导(Class Wizard) 管理上述绑定关系、事件消息映射、函数生成等 集中控制变量、消息映射、类创建等一体化操作

🎛 二、在"添加变量"窗口中各项解释(你图里的那一页)

以你截图中的为例:

项目 含义 举例
控件ID (IDC_BTN_TEST) 在资源编辑器中为控件分配的唯一标识符 IDC_BTN_TEST
控件类型 (BUTTON) 控件的类型(如按钮、编辑框、列表框) BUTTON
类别 (控件 / 值) 决定变量的用途:①"控件"类变量用来直接操作控件对象;②"值"类变量用于绑定数据值(比如 Edit 控件和CString 文本的对应) CButton m_btnTest;CString m_strName;
访问 (public/protected/private) 成员变量的访问级别 通常选 publicprotected
变量类型 (CButton) Visual Studio 自动推断出的控件类类型 CButton
名称 (m_btnTest) 变量名(你自己定义) m_btnTest
注释 (可选) 对变量的说明备注 "测试按钮" 等

🧠 三、类别区别:"控件变量" vs "值变量"

类别 用法 示例
控件变量(Control) 用于直接控制控件对象(调用成员函数等) m_btnTest.SetWindowText(_T("OK"));
值变量(Value) 仅用于数据交换(Data Exchange),不直接操作控件 UpdateData(TRUE); // 把Edit框内容读入 m_strName``UpdateData(FALSE); // 把m_strName值显示到Edit框

👉 所以:"类别"是控制你要绑定的内容是控件对象本身 还是它的数据值


⚙️ 四、"类向导(Class Wizard)"的作用

在 MFC 里,类向导是一个集中式的工具:

  1. 添加控件变量(就是你现在在做的)

  2. 添加消息处理函数 (如按钮点击事件 OnBnClickedBtnTest()

  3. 管理DDX/DDV绑定

  4. 为资源(如对话框、菜单)创建新的类


✅ 五、建议使用顺序(典型流程)

  1. 资源视图 中设计对话框。

  2. 使用 类向导 → 添加类(Add Class) 为该对话框创建类,例如 CTestDlg

  3. 类向导 → 添加变量(Add Variable) 里为控件添加控件变量或值变量。

  4. 类向导 → 消息映射 页添加响应函数(如按钮点击事件)。

告诉你们一个小妙招

解决这个办法,文件资源管理器中找.rc,右键选择打开方式,选择"资源编辑器"就可以打开了

相关推荐
泓铮1 天前
Windows 环境下 WSL2 与 VMware Workstation 17 共存机制研究与工程实践
windows
澈2071 天前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
A.A呐1 天前
【C++第二十九章】IO流
开发语言·c++
ambition202421 天前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
kebeiovo1 天前
atomic原子操作实现无锁队列
服务器·c++
Yungoal1 天前
常见 时间复杂度计算
c++·算法
6Hzlia1 天前
【Hot 100 刷题计划】 LeetCode 48. 旋转图像 | C++ 矩阵变换题解
c++·leetcode·矩阵
Ricky_Theseus1 天前
C++右值引用
java·开发语言·c++
吴梓穆1 天前
UE5 c++ 常用方法
java·c++·ue5
云栖梦泽1 天前
Linux内核与驱动:9.Linux 驱动 API 封装
linux·c++