MFC UI控件相关

news/2024/11/19 21:33:43/

文章目录

  • UI控件相关
    • CDialog::OnInitDialog() 对话框初始化
      • 手动添加
    • UpdateData() 刷新窗口数据
    • DoDataExchange()数据与控件动态绑定
    • afx_msg: 声明一个消息响应函数
    • void AFXAPI DDX_Control( CDataExchange* pDX, int nIDC, CWnd& rControl );
    • DDV_MaxChars()

UI控件相关

CDialog::OnInitDialog() 对话框初始化

调用这个成员函数是对WM_INITDIALOG消息作出的反应。这条消息是在对话框即将显示之前,在Create,CreateIndirect或DoModal调用期间发出的。
如果在对话框初始化后需要执行特别处理,覆盖该函数。首先调用基类OnInitDialog,但不考虑其返回值。正常情况下,覆盖的函数返回TRUE。Windows调用OnInitDialog函数是通过标准的全局对话框过程(它们对于所有的Microsoft基础类库的对话框是通用的),而不是通过消息映射。因此该函数不需要消息映射入口

手动添加

通常创建完MFC应用程序后,系统会自动创建OnInitDialog()。但是当添加了子对话框类后,有时候系统却不会自动为子对话框类添加OnInitDialog()函数,这时就需要我们自己来添加了。

  1. 在MFC【类向导】配置界面,依次选择虚函数、 OnInitDialog、添加函数、确定,OnInitDialog()函数就自动添加到子对话框类中了。
    在这里插入图片描述

MFC如何添加OnInitDialog()函数

UpdateData() 刷新窗口数据

MFC的窗口函数,用来刷新数据的。
操作系统会调用这个函数来初始化对话框中的数据,或者检索或者验证对话框中的数据。

当你使用了ClassWizard建立了控件和变量之间的联系后:
UpdateData(TRUE):将控件的值赋值给成员变量;
UpdateData(FALSE):将成员变量的值赋值给控件。

DoDataExchange()数据与控件动态绑定

afx_msg: 声明一个消息响应函数

Afx前缀是微软MFC一个小组的名称简写,并没有别的意义。MFC的很多代码,包括全局函数名、宏、头文件名都使用了"Afx"。Afx*.h是一组MFC的核心头文件,比如: afxwin.h 定义MFC的核心和标准组件;afxext.h 定义MFC的扩展;afxdisp.h 是MFC自动化支持的类定义头文件;afxdb.h 是MFC的ODBC类封装。

afx_msg void OnBnClickedButton(); 其中 afx_msg为消息标志,它向系统声明:有消息映射到函数实现体;而在map宏定义中,就有具体消息和此函数的映射定义(可以是自定义,也可以是系统自动完成的)

void AFXAPI DDX_Control( CDataExchange* pDX, int nIDC, CWnd& rControl );

  • pDX是 指向CDataExchange对象的指针。这种结构为指定对象提供了建立数据交换的环境,也包括结构的指向。
  • nIDC就是你的控件ID,rControl控件关联的变量。

DDV_MaxChars()


http://www.ppmy.cn/news/5626.html

相关文章

Android OpenGL ES 学习(十) – GLSurfaceView 源码解析GL线程以及自定义 EGL

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投影 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用…

Spring之底层架构核心概念-BeanDefinition

目录1.什么是BeanDefinition?2.如何生成BeanDefinition?2.1. Component2.1. bean标签2.3. Bean注解2.4. AbstractBeanDefinition2.5. 利用BeanDefinition 读取器-解析类2.6. XmlBeanDefinitionReader - 解析 xml文件2.7. ClassPathBeanDefinitionScanner 扫描生成 …

Centos7下安装Nginx及配置SSL

文章目录1.官网下载Nginx2.安装依赖包3.安装Nginx4.启动Nginx5.防火墙放开端口6.Nginx的SSL模块安装7.SSL证书准备8.Nginx配置SSL1.官网下载Nginx ​ 去官网下载需要的nginx压缩包,地址:http://nginx.org/en/download.html,此处下载最新稳定…

Promise(三) promise自定义封装25-35

1.初始结构搭建 2.resolve和reject结构搭建 3.throw抛出异常改变状态 4.promise对象状态只能修改一次 5.then方法执行回调 6.指定多个回调的实现 7.同步修改状态then方法结果返回 8.异步修改状态then方法结果返回 9.then方法完善与优化 10.catch方法——异常穿透与值管…

HTML期末作业,基于html实现中国脸谱传统文化网站设计(5个页面)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

【浅学Linux】信号产生的4中方式

文章目录一:通过终端按键产生信号二:调用系统函数向进程发信号三:由软件条件产生信号四:硬件异常产生信号总结一:通过终端按键产生信号 比如用户输入命令,在Shell下启动一个前台进程。 用户按Ctrl C&…

leetcode 337 打家劫舍III

题目 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为 root 。 除了 root 之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果 两个直…

【C++入门基础(上)】

Cross the stars over the moon to meet your better-self. 目录 1 命名空间 1.1 命名空间定义 1.2 命名空间使用 1.2.1 加命名空间名称及作用域限定符 1.2.2 使用using将命名空间中成员引入 1.2.3 使用using namespace 命名空间名称引入 2 C输入&&输出 3 缺省参数…