博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三章 控件(6~7课)
阅读量:7187 次
发布时间:2019-06-29

本文共 1109 字,大约阅读时间需要 3 分钟。

第6课:

第7课:

 

概述:

在MFC中,控件是具有独立功能的人机交互的小窗口,它们除了可以使用自身成员外,还可使用其基类CWnd类的公有成员,因为几乎所有的控件类都是从CWnd类派生而来的。

正因为如此,当用控件类的Create创建控件时,除了自身的样式预定义标识外,还有窗口通用的样式预定义标识。

当对话框资源创建对话框类后,控件只能以成员的方式出现在对话框类中。

 

控件变量:

用MFC ClassWizard可为控件在对话框类中创建两种类别的成员变量:其一是控制类,即创建的是控件类对象;其二是数据类,即创建的是控件数据变量(我认为是控件变量)。这两种类别的成员在对话框类中只能各有一个。控件类对象可以引用控件类及其基类的公有成员,从而实现控件的操作;而数据类变量则是与控件绑定在一起,当使用UpdateData()时将控件上的数据存储到绑定的数据变量中,而当使用UpdateData(FALSE)则是将绑定的数据变量的数值回填到控件中。

 

消息:

不同控件的“通知消息”有所不同,总体可分为三类:其一是与界面相关的单击、选择与取消或展开与收缩等的命令消息;其二是与输入焦点相关的失去、得到等消息;其三是与数据相关的更新、改变等消息。这些消息,系统都会用一个称为MSG结构的系统变量来记录,并可用MFC ClassWizard对话框对其进行映射。

即控件不仅仅在对话框类中使用控件变量操作,还可通过控件的消息映射来实现代码功能。

 

美观:

MFC的控件更注重于控件的程序控制,而VB的控件更注重于控件的界面设计。

事实上,MFC的控件也可进行更深入的界面设计,包括两种层次不同的方法:其一是使用“自画”(Owner Draw,所有者绘制)体系;其二是跟踪消息。

对于“自画”体系,它可通过重载DrawItem函数来达到目的,但这种方法暂时较难。

跟踪消息是一个简单可行的方法。在前面的“调整对话框背景颜色”示例中,用到了WM_CTLCOLOR消息,这个消息是当对话框及控件等在显示之前向父窗口发生的消息,通过跟踪这个消息,在WM_CTLCOLOR消息函数OnCtrlColor返回之前,指定返回一个HBRUSH,系统就会用它绘制控件,从而改变控件的背景颜色。当然,也可在此函数中添加设置控件文本的颜色、格式等的代码,从而改变控件的外观。

 

彩蛋:

由上可知,在界面设计中,对话框是一种常用的模板,它包含了许多控件等界面元素。

实际上,在文档应用程序中,除了对话框外,还有菜单、工具栏和状态栏等界面模板,下一章将讨论这些模板。

 

转载于:https://www.cnblogs.com/xzxl/p/7954379.html

你可能感兴趣的文章
磁盘阵列
查看>>
托管 ,com
查看>>
Spring Boot MongoDB 查询操作 (BasicQuery ,BSON)
查看>>
SaltStack安装redis
查看>>
Python模块常用的几种安装方式
查看>>
AtCoder Regular Contest 060
查看>>
Docker - 基础讲义
查看>>
python学习之老男孩python全栈第九期_数据库day003知识点总结 —— MySQL数据库day3...
查看>>
Linux 安装 java
查看>>
计算机基础
查看>>
裁剪方法--layer.makesToBounds 和 clipsToBounds区别和联系
查看>>
qemu-img: Could not open old backing file... 分...
查看>>
leetcode509
查看>>
leetcode987
查看>>
[软件工程]在Ubuntu系统下配置GIT
查看>>
PhpStorm快捷键
查看>>
java IO流全面总结
查看>>
多线程学习-基础(十二)生产者消费者模型:wait(),sleep(),notify()实现
查看>>
最短路径 | 问题集合
查看>>
C# 基础 new 、override实现多台区别
查看>>