第七章 控件和对话框
第7章 pb窗口
1、普通方式创建
(1)在工具条上单击New图标,弹出“New”对话框。 (2)在弹出的对话框中选择“PB Object”标签页,如图7-1所示。
下 午 10:09:34
图7-1
新建对话框
PowerBuilder
3/18
(3)单击选中Window图标,单击“OK”按钮,打开窗口画板,如图7-2所示。
下 午 10:09:34
PowerBuilder
4/18
2、继承方式创建
(1)单击工具条上的Inhert图标 ,打开“Inherit from Object”对话框,如 图7-7所示。在该对话框的“Target”下拉框中选择在哪个目标中打开对象, “Libraries” 列表框中选择当前路径中的库文件(即后缀名为.PBL的文件),在对 象类型下拉框(Objects of Type)中选择对象类型Windows,在中间的对象列表框 中选择从哪个对象继承。
下 午 10:09:34
PowerBuilder
15/18
(4)带参数关闭窗口(CloseWithReturn)
在响应窗口(Response Window)中,使用CloseWithReturn()函数 在关闭窗口的同时向打开该窗口的程序返回一个值。与OpenWithParm() 函数相似,CloseWithReturn()函数同样借用全局对象Message保存返回 的值。CloseWithReturn()函数的语法格式为: CloseWithReturn(windowname, returnvalue) 其中,windowname是要关闭的窗口;returnvalue是返回值,该值 保存在消息对象Message的属性中。
下 午 10:09:34
对话框及常用控件
2
对话框程序的创建
2.1 一个对话框程序 2.2 创建对话框资源模板 2.3 利用对话框类CDialog操纵对话框 2.4 初始化对话框 2.5 对话框的调用 2.6 对话框的消息处理
2.1
一个对话框程序
1.程序功能 该应用程序具有认证的功能:当该程序运行时,首先弹 出一个“密码验证” 对话框,让用户输入其用户名和密 码。用户需要输入用户名“good”和用户密码“ good ” 后才能进入主界面,若有一个输入错误,都不能进入。 2.程序类型
1.3 对话框的组成(续)
对话框类 从CDialog类派生的对话框类提供编程接口来 管理与对话框模板相关联的对话框。 CDialog 类的 许多成员函数与对话框编程密切相关,可供程序员 调用。由于对话框是一种窗口,因此相应的对话框 类必须与一个Windows窗口相联系,而对话框资源 模板就是用于创建这个 Windows窗口及其包含在其 中的控件。 对话框类可以看作对话框应用程序的一种程序 员接口,用户对应用程序操作,后台调用的都是该 类的成员函数来完成的。
可见在对话框的构造函数中主要是对对话框的数据成员变量 进行初始化。
2.4
初始化对话框(续)
2.在WM_CREATE的消息映射函数中初始化 由于对话框也是窗口,它在窗口创建时会收到 WM_CREATE 消息,该消息的响应函数是 OnCreate()。 这样,就能在窗口创建中做一些初始化工作。尽管用户 可能在 WM_CREATE 消息处理函数中进行一些数据成员 的初始化工作,但更通常的做法是在对话框中的所有控 件都建立起来之后,响应消息 WM_INITDIALOG 时,对 数据成员进行初始化。 3.在WM_INITDIALOG的消息映射函数中初始化 在对话框创建时,会收到 WM_INITDIALOG 消息,该 消息的响应函数是OnInitDialog()。在得到了
第七章 面向对象的程序设计
第七章面向对象的程序设计本章是面向对象的程序设计。
与第五章介绍的面向过程的结构化程序设计不同,主要介绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对象的编程技术,详尽介绍了对各类控件的选择与使用方法。
在对诸如表单等各类控件对象的设计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序代码设计中,仍然使用到结构化的程序设计方法。
本章的主要内容是面向对象程序设计的理论基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面—表单。
7.1 学习提要1.学习目标与要求通过本章学习,读者应达到以下要求:⑴了解对象、类等基本概念;⑵理解对象的属性、方法和事件;⑶熟练掌握表单的基本设计、操作和应用;⑷掌握常用控件的设计与使用。
⑸熟练掌握常用事件、方法的过程代码的设计方法。
⑹了解自定义类的创建和使用方法。
2.重点与难点:⑴本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控件属性、事件和方法的选择与运用。
⑵本章难点:本章的重点即为本章的难点3.主要知识点⑴面向对象的概念①对象、类②属性、方法、事件③Visual FoxPro 中的基类⑵表单的创建与基本操作①表单的创建使用“窗体设计器”或“表单向导”创建表单。
②表单的修改、运行使用“窗体设计器”编辑修改表单。
使用菜单或命令方式运行表单。
③表单的属性、事件和方法表单常用属性的设置,表单的常用事件、常用方法。
④设置表单的数据环境数据环境的概念,数据环境的设置。
⑶表单常用控件①表单常用控件的基本操作控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。
②常用控件对象标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。
③控件对象的常用属性设置Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。
vfp第六章 表单 第七章控件
第六章表单的创建与使用6.1 面向对象程序设计概述1. 基本概念 P161-165面向对象的程序设计是通过对类、子类和对象等的设计来体现的,类是面向对象程序设计技术的核心。
类:定义了对象特征以及对象外观和行为的模板。
类的特征:1)封装性:隐藏了类中对象的内部数据或操作细节,只看到外表信息。
2)继承性:任何类都可以从其它已有的类中派生,新类保持了父类中的行为和属性,但增加了新的功能。
体现了面向对象设计方法的共享机制。
3)多态性:相同的操作可作用于多种类型的对象上,并获得不同的结果。
4)抽象性:提取一个类或对象与众不同的特征,而不对该类或对象的所有信息进行处理。
基类:系统本身提供的类称为基类。
基类包括容器类和控件类。
容器类是其他对象的集合,如表格、选项按钮组;控件类是单一的对象,不包含其他对象,如命令按钮、文本框。
子类:以其他类定义为起点,对某一对象所建立的新类。
新类将继承任何对父类所做的修改。
类库:存储类的文件,每一个以可视方式设计的类都存储在一个类库中。
类库文件的扩展名为 .VCX 。
P216对象:是类的一个实例,包括了数据和过程。
具有所在类所定义的全部属性和方法。
VFP有两种对象:容器对象和控件对象。
属性:控件、字段或数据库对象的特性。
事件:由对象识别的一个动作。
方法:与对象相联系的由程序执行的一个处理过程,即处理事件的一组代码。
用户不可以为对象创建新的事件,但可以创建新的方法程序。
2. Visual FoxPro 基类 P166从下述 Visual FoxPro 基类中,可以派生子类或创建对象。
容器命令组控件微调标签表单命令按钮复选框OLE 容器控制线条表单集选项组列表框OLE 绑定型控制分隔符 # 表格选项按钮 # 文本框自定义形状标头 # 页框组合框工具栏图象列 # 页面 # 编辑框计时器注:# 这些类是父容器的集成部分,在类设计器中不能子类化。
基类事件的最小集合 P167事件说明Init 当对象创建时激活。
VB--ch7通用对话框
CommonDialog1. ShowPrinter 同 Action = 5 CommonDialog1. ShowHelp 同 Action = 6
设计时设置控件属性
• 右击窗体上的CommonDialog控件图标, 可以打开“属性页”对话框,如下图所示:
有5个选项卡, 用于对不同类 型的对话框进 行属性设置
CommonDialog1.Action = 4
Text1.FontName =CommonDialog1.FontName Text1 1.FontBold=CommonDialog1.FontBold
End Sub
例7.5
“字体”对话框示例。
编程:在文本框上显示文字,利用“字体”对 话框来设置所显示文字的字体、字型、大小、 颜色等。 知识点: 设置字体一定需要添加语句: CommonDialog1.Flags=1+256 (屏幕字体加下划线、删除线、颜色组合框)
把对话框部件添加到工具箱步骤: “工程” “部件” 选中: Microsoft Common Dialog Control 6.0 对话框的类型由对话框控件的Action属性决定。 与Timer 控件一样,CommonDialog 控件
在程序运行时不可见。
通用对话框的重要属性 Action
Action属性只能在运行时设置: 只写
Text1.BackColor = CommonDialog1.Color
End Sub
例7.4 利用颜色对话框给shape着色
界面设计,如图所示。 在窗体上添加一个框架:在框架上画出6个单选 钮(控件数组)用来选择不同的形状; 形状控件、通用对话框控件、命令按钮各一个。 知识点:
这里采用了一组 控件数组来设计 单选钮,充分体 现使用控件数组 的优点
VS2010之MFC入门到精通教程(1-55全部)
VS2010/MFC编程入门教程之目录第一部分:VS2010/MFC开发环境VS2010/MFC编程入门之前言VS2010/MFC编程入门之一(VS2010与MSDN安装过程图解)第二部分:VS2010-MFC应用程序框架VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)VS2010/MFC编程入门之四(MFC应用程序框架分析)VS2010/MFC编程入门之五(MFC消息映射机制概述)第三部分:对话框VS2010/MFC编程入门之六(对话框:创建对话框模板和修改对话框属性)VS2010/MFC编程入门之七(对话框:为对话框添加控件)VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)VS2010/MFC编程入门之九(对话框:为控件添加消息处理函数)VS2010/MFC编程入门之十(对话框:设置对话框控件的Tab顺序)VS2010/MFC编程入门之十一(对话框:模态对话框及其弹出过程)VS2010/MFC编程入门之十二(对话框:非模态对话框的创建及显示)VS2010/MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)VS2010/MFC编程入门之十四(对话框:向导对话框的创建及显示)VS2010/MFC编程入门之十五(对话框:一般属性页对话框的创建及显示)VS2010/MFC编程入门之十六(对话框:消息对话框)VS2010/MFC编程入门之十七(对话框:文件对话框)VS2010/MFC编程入门之十八(对话框:字体对话框)VS2010/MFC编程入门之十九(对话框:颜色对话框)第四部分:常用控件VS2010/MFC编程入门之二十(常用控件:静态文本框)VS2010/MFC编程入门之二十一(常用控件:编辑框Edit Control)VS2010/MFC编程入门之二十二(常用控件:按钮控件Button、Radio Button和Check Box)VS2010/MFC编程入门之二十三(常用控件:按钮控件的编程实例)VS2010/MFC编程入门之二十四(常用控件:列表框控件ListBox)VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)VS2010/MFC编程入门之二十六(常用控件:滚动条控件Scroll Bar)VS2010/MFC编程入门之二十七(常用控件:图片控件Picture Control)VS2010/MFC编程入门之二十八(常用控件:列表视图控件List Control 上)VS2010/MFC编程入门之二十九(常用控件:列表视图控件List Control 下)VS2010/MFC编程入门之三十(常用控件:树形控件Tree Control 上)VS2010/MFC编程入门之三十一(常用控件:树形控件Tree Control 下)VS2010/MFC编程入门之三十二(常用控件:标签控件Tab Control 上)VS2010/MFC编程入门之三十三(常用控件:标签控件Tab Control 下)第五部分:菜单、工具栏与状态栏VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)VS2010/MFC编程入门之三十五(菜单:菜单及CMenu类的使用)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)VS2010/MFC编程入门之三十七(工具栏:工具栏的创建、停靠与使用)VS2010/MFC编程入门之三十八(状态栏的使用详解)第六部分:文档、视图和框架VS2010/MFC编程入门之三十九(文档、视图和框架:概述)VS2010/MFC编程入门之四十(文档、视图和框架:各对象之间的关系)VS2010/MFC编程入门之四十一(文档、视图和框架:分割窗口)第七部分:MFC常用类VS2010/MFC编程入门之四十二(MFC常用类:CString类)VS2010/MFC编程入门之四十三(MFC常用类:CTime类和CTimeSpan类)VS2010/MFC编程入门之四十四(MFC常用类:定时器Timer)VS2010/MFC编程入门之四十五(MFC常用类:CFile文件操作类)VS2010/MFC编程入门之四十六(MFC常用类:MFC异常处理)第八部分:字体和文本输出VS2010/MFC编程入门之四十七(字体和文本输出:CFont字体类)VS2010/MFC编程入门之四十八(字体和文本输出:文本输出)第九部分:图形图像VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)VS2010/MFC编程入门之五十(图形图像:GDI对象之画笔CPen)VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)第十部分:Ribbon界面开发VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)VS2010/MFC编程入门之前言鸡啄米的C++编程入门系列给大家讲了C++的编程入门知识,大家对C++语言在语法和设计思想上应该有了一定的了解了。
第7章 菜单、工具栏和状态栏
菜单项的事件: 菜单项的事件:Click
7
本章目录
一些常用的快捷键及其含义:
<Ctrl+N> ——创建新文件。 <Ctrl+O> ——打开一个已有的文件。 <Ctrl+S> ——保存当前文件。 <Ctrl+Z> ——取消。 <Ctrl+X> ——剪切。 <Ctrl+C> ——复制。 <Ctrl+V> ——粘贴。 <Alt+F4> ——关闭窗口。
16
案例分析: 案例分析:状态栏的使用
为记事本创建一个状态栏,包含两个ToolStripStatusLabel 为记事本创建一个状态栏,包含两个ToolStripStatusLabel 要求启动窗体时显示系统日期
stslblTime.Text ="当前日期:"+ DateTime.Now.ToShortDateString(); 当前日期: 当前日期
13
2.工具栏各项属性和事件
(1)工具栏各按钮 如ToolStripButton1)属性 工具栏各按钮(如 工具栏各按钮 属性 Image:指定按钮上的图片 指定按钮上的图片 Text:显示在工具按钮上的文本 显示在工具按钮上的文本 DisplayStyle:获取或设置工具按钮是否显示文本和图像 获取或设置工具按钮是否显示文本和图像 Checked:确定是否按下工具按钮。 确定是否按下工具按钮。 确定是否按下工具按钮 CheckOnClick:指定工具按钮是否自动显示按下或未按下 指定工具按钮是否自动显示按下或未按下 状态。 状态。 ToolTipText:指定工具提示的文本 指定工具提示的文本 (2)事件: )事件: Click事件 事件 CheckChanged事件:Check属性发生变化时发生 事件: 事件 属性发生变化时发生
全国计算机等级考试 二级MS office 第七章宏与控件的简单应用
Ⅱ、宏的简单应用
• 3.运行宏 ① 打开包含宏的工作簿,选择运行宏的工作表(注意:包含宏的文档以 *.xlsm 为扩展名)。 ② 在“开发工具”选项卡上的“代码”组中,单击“宏”按钮,打开“宏”对话框。 ③ 在“宏名”列表框中单击要运行的宏,如图所示。 ④ 单击“执行”按钮,Excel自动执行宏并在工作表中显示相应结果。
Ⅱ、宏的简单应用
• 4. 将宏分配给对象、图形或控件 • 将宏指定给工作表中的某个对象、图形或控件后,单击它即可执行宏。基本操作方法如下: • ① 首先打开包含宏的工作簿,在工作表的适当位置创建对象、图形或控件。 • ② 用鼠标右键单击该对象、图形或控件,从弹出的快捷菜单中单击“指定宏”命令,打开 “指定宏”对话框,如图 所示。 • ③ 在“指定宏”对话框的“宏名”列表框中,选择要分配的宏,然后单击“确定”按钮。 • ④ 单击已指定宏的对象、图形或控件,即可运行宏。
• 控件的使用与选择 • 使用控件:在控件外单击任意单元格,使控件不被选中,此时可使用控件。 • 选中控件:右键单击或按下Ctrl键单击控件,使其处于选中状态,此时可以移动控件、改变 控件大小、设置控件格式。 • 删除控件:选中控件后,按Delete键
13
Ⅲ 、控件的简单应用
• 设置表单控件 • ① 右键单击控件,弹出类似图所示的快捷菜单。不同的控件带出的快捷菜单可能有所 不同。 • ② 通过快捷菜单可以对控件进行编辑设置,其中: • 编辑文字:可以修改控件的说明文字,以明确控件所代表的内容。 • 指定宏:为控件分配一个现有的宏或录制一个新宏。需要启动宏并将工作簿保存为启 用宏格式。 • 设置控件格式:将打开“设置控件格式”对话框,可对控件属性进行全面设置。选中控 件后,单击“开发工具”选项卡上“控件”组中的“属性”按钮,可以打开“设置控件格式”对 话框。
第七章 vb6.0菜单的设计与多文档界面
第七章菜单的设计与多文档界面7.1 菜单简介大多数Windows应用程序都有一个菜单栏,它总是处在窗体标题栏的下面,并包含一个或多个菜单标题。
单击每个菜单标题都会弹出一个下拉菜单,在下拉菜单中包含有菜单项、分隔条和子菜单标题。
有的菜单项可以直接执行,有的菜单项执行时则会弹出一个对话框。
所有的Windows应用程序都遵循以下3个约定:凡是菜单名称后有一个省略号的,均表示在单击该选项后会弹出一个相应的对话框,在用户作出相应的回答后,该项功能就以用户所给予的信息去执行。
例如,单击【打开】选项,则弹出【打开】对话框,用户可从中选择要打开的文件。
凡是菜单名称后有一个小三角的,则表示它是一个子菜单标题,子菜单标题并不能直接执行,仅仅扮演一个“容器”的角色。
当鼠标指针移动到子菜单标题上时,会自动弹出子菜单。
例如,将指针移动到【发送】选项,就会弹出子菜单。
菜单名称后不包含L述两种符号者,表明该菜单项所代表的命令可直接执行。
例如,单击【关闭】选项,则将关闭当前打开的文档。
另外,有的菜单项名称后还显示相应的键盘访问键和快捷键。
访问键允许同时按下Alt键和一个指定字符来打开一个菜单。
一旦菜单打开,通过按下访问键即可选取菜单项。
在菜单项的标题中,访问键表现为一个带下划线的字母,如【打开】命令的访问键为0.当打开【文件】菜单后,按下0键即可执行【打开】命令。
快捷键出现在相应菜单项的右边,例如,【打开】命令的快捷键是Ctrl+O,无论【文件】菜单是否打开,只要按下Ctrl+O组合键,即可执行【打开】命令。
由于所有Windows应用程序都遵循上述约定,因此,在创建菜单时,也应该遵循这些约定。
例如,如果某菜单项的执行结果是弹出一个对话框,则应该在该菜单项后加上省略符(…).此外,要使应用程序简单好用,还应该将菜单项按其功能分组。
例如,与文件有关的命令【新建】、【打开】和【另存为】都列入了【文件】菜单。
同一菜单中不同类型的选项之间还使用分隔条分隔开来。
7标签控件
标签控件:1.创建基于对话框应用程序,在该对话框上添加一个标签控件,并为标签控件关联control 型变量m_tab.2.在资源视图中选择Dialog节点,分别添加2个对话框IDD_DIALOG1和IDD_DIALOG2,并分别关联类:CDialog1和CDialog2。
并将其Style属性改为“Child”,Border属性改为“None”。
3.在主对话框头文件中添加如下声明:CDialog1 *m_dia1;CDialog2 *m_dia2;并在文件开头包含相应的头文件。
4.在主对话框的初始化函数中添加如下代码:m_tab.InsertItem(0,"教师信息",0);m_tab.InsertItem(1,"学生信息",1);m_dia1=new CDialog1;m_dia2=new CDialog2;m_dia1->Create (IDD_DIALOG1,&m_tab);m_dia2->Create (IDD_DIALOG2,&m_tab);m_dia1->CenterWindow ();m_dia2->CenterWindow ();m_dia1->ShowWindow (SW_SHOW);5.添加标签的TCN_SELCHANGE事件,在该事件中获得选中标签项的索引,根据索引判断显示的对话框,添加如下代码:int index=m_tab.GetCurSel();switch(index){case 0:m_dia1->CenterWindow ();m_dia1->ShowWindow (SW_SHOW);m_dia2->ShowWindow (SW_HIDE);break;case 1:m_dia2->CenterWindow ();m_dia2->ShowWindow (SW_SHOW);m_dia1->ShowWindow (SW_HIDE);break;}6.处理对话框的WM_CLOSE事件,在主对话框关闭时销毁3个非模态对话框,并释放指针。
对话框及常用控件
统一的视觉风格
对话框的视觉风格应与应 用程序的整体风格保持一 致。
合适的色彩搭配
对话框的颜色搭配应符合 应用程序的主题和风格, 同时也要考虑色彩的对比 度和舒适度。
精美的图标和插图
对话框中可以适当地使用 图标和插图,以提高视觉 效果和用户体验。
一致性
对话框布局一致
不同对话框的布局和组件应保持一致,以提高用户对 应用程序的熟悉度和使用效率。
提示对话框
总结词
提供简短信息或警告的对话框
详细描述
提示对话框通常用于向用户显示应用程序的状态或提 供简短的通知。它包含一个标题、一条消息和一个关 闭按钮。根据需要,提示对话框还可以包含图标以强 调其重要性。
感谢观看
THANKS
按钮
总结词
用于触发特定功能的控件
详细描述
按钮是常见的交互控件,用户点击按钮后可以触发特定的功能或操作。根据功 能,按钮可分为确认、取消、提交等类型。
列表框
总结词
用于显示和选择列表项的控件
详细描述
列表框可以显示一系列的列表项,用户可以通过鼠标或键盘选择所需的列表项。根据选择方式,列表 框可分为单选列表框和多选列表框。
对话框的分类
模态对话框
模态对话框会阻塞用户对其他界面的 操作,直到对话框关闭。这类对话框 常用于需要用户做出决策或输入的情 况。
非模态对话框
非模态对话框不会阻塞用户对其他界 面的操作,用户可以在对话框打开的 同时进行其他操作。这类对话框常用 于显示信息或提供简单的选项。
对话框的使用场景
确认操作
01
复选框
总结词
用于表示选项是否被选中的控件
详细描述
复选框是一种开关控件,用户可以通过点击来选中或取消选中某个选项。多个复选框可 以组合在一起,表示多个选项的组合。Fra bibliotek单选按钮
对话框编程new
CMyButton m_btn1;
CMyButton m_btn2; m_btn1 0088:4400 0088:4660 m_btn2
m_pMyBtn= 0088:4660
m_pMyBtn= 0088:4400
实现机制
在OnMouseMove中 ShowWindow(SW_HIDE); //先隐藏自己 m_pBtn->ShowWindow(SW_SHOW); //再显示对方
{ pDC->SelectObject(&m_font); }
改变按钮的外观
对于按钮,要实现自绘的文本和颜色,应该去编写一个 Button类,从CButton类派生,然后重载DrawItem这个 函数。框架会调用DrawItem函数实现绘制。
自绘按钮必须有BS_OWNERDRAW排列在一起的编辑框就是它的伙伴
,而是Tab顺序值与它相邻并小于它的控件就是它的伙伴。
可通过下面的步骤实现编辑框和微调按钮一起使用:
(1)通过Layout菜单中的Tab Order命令设置控件的Tab顺序 。若微调按钮IDC_SPIN1的Tab值为7,若想与ID值为IDC_EDIT1 的编辑框作为伙伴一起使用,则IDC_EDIT的编辑框的Tab值必 须为6,而不管它位于对话框上的哪个位置。 ( 2 ) 将 微 调 按 钮 的 属 性 设 定 为 Auto buddy 和 Set buddy
,WM_CTLCOLOR被调用多次,每一个控件都会准备一个
CDC的指针,通过第一个参数传递进来,第二个参数表 明请求颜色的是哪个控件,第三个参数是那一种类型的 控件。
改变对话框以及对话框控件的颜色
对话框捕获WM_CTLCOLOR消息
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
WTL中的对话框和控件
・ 通用控 件 :Cl g LS CLsViwC MF 中为 ma e it it e tl( C r
C iCr) C r Ve t ( C 中 为 C r Cr 、 H aeCr Ls t 、 Te i t 1 e wCr MF I Te t ) C edrt e 1 l
图 1 : 创 建 基 于 对 话 榧 田 应 用
Hale Waihona Puke ( 具有复选框 的列表 视图 )C r Ve tE 和C r lm ( 、 Te i r x Te t e wC l ee 两个
类一起使 用 . Te lm封装 了H R E E 、 H p ri 可点击 Cr t ee T E I M) C y e n T L k( 的超链接 .在所有操作 系统 上均 可用 ) 。 需要 注 意 的是 大 多 数 的封 装类 都 是 窗 口接 口类 .就像 C no Wi w一样。它们封 装了H D d WN 并提供 了围绕 消息 的封装层 ( 例如 .C iB x :eC re(封 装了 L_ E C R E ) Ls o :G tuS l) t B G T U S L 。因而像
CE t CScol a CDrg s B di r I r B a Lit ox
、 、
对
c no wi w一样 . d 创建一个临时 的控件封 装对 象并将之 关联到现 存 的控件 上 , 其代价 是很低的。仍然像 C n o Wi w一样 ,当控件 d 封 装对象析 构 时控 件并不会被 销毁 .不过 C ma B to Bi p u t n、 t
C p B t n t ) C rge s a t 、 H te C r A i ae t 、 S j ut C r 、 Po rsB r r C oK y t 、C nm tC r n o 1 C l l t
《LabVIEW 程序设计教程》课件第七章 人机界面设计
7.1 下拉列表控件和枚举控件 7.2 列表框控件 7.3 表格与树形控件 7.4 VI属性设置 7.5 对话框 7.6 菜单 7.7 选项卡 7.8 多面板 7.9 光标 7.10 自定义控件和数据类型 7.11 用户界面设计 7.12 VI程序设计规则
7.1 下拉列表控件和枚举控件
多面板程序事件结构框图
通过菜单实现多面板程序
7.9光标
Windows平台上的光标通常分为两类,一种是动 画光标,保存为*.ani文件;另一种是静态光标,保 存为*.cur文件。
LabVIEW自带光标图
设置光标忙碌状态实例
7.10自定义控件和数据类型
LabVIEW专门提供了自定义控件编辑窗口来编辑自 定义控件。右击前面板的任何控件,在弹出的快捷 菜单中选择“高级---自定义…”选项,就可以打开自 定义控件编辑窗口
7.3表格与树形控件---表格
Express表格的例子
树形控件
树形控件的编辑
编辑树形控件
7.4 VI属性设置
7.5对话框
对话框按类型分为两类对话框:一种是信息显示对话 框,另一种是提示用户输入对话框。
其中,信息对话框有四种: 1) 单按钮对话框 2)双按钮对话框 3)三按钮对话框 4)显示对话框信息
动态交互界面
7.12VI程序设计规则
关于前面板的设计 关于程序框图的设计 关于VI
谢谢
步骤一:加载菜单文件
步骤二:添加菜单选择(用户)事件
步骤三:编写程序框图
右键快捷菜单
右键快捷菜单是为某一个具体控件设置的菜单,只有 当用户右击该控件时,才会弹出菜单。
它更具有针用户更多的交互需求。
右键快捷菜单的创建方式也有两种,一种是通过菜单 编辑器创建菜单,另一种是通过编程动态创建菜单。
第七章用户界面设计
对话框及其工作原理
应用程序一般用DialogBoxParam或CreateDialogBox函 应用程序一般用DialogBoxParam或CreateDialogBox函 DialogBoxParam 数来创建对话框; 数来创建对话框; DialogBoxParam用来创建模式对话; DialogBoxParam用来创建模式对话; 用来创建模式对话 CreateDialogBox用来创建无模式对话框。 CreateDialogBox用来创建无模式对话框。 用来创建无模式对话框 创建对话框的第一步是创建对话框模版, 创建对话框的第一步是创建对话框模版,它定义了对话 框的基本属性:高度、宽度及其中包含的控件; 框的基本属性:高度、宽度及其中包含的控件; 使用VC++的Insert/Resource菜单命令可以非常容易的 使用VC++的Insert/Resource菜单命令可以非常容易的 VC++ 加入对话框资源. 加入对话框资源.
第七章 用户界面设计
1
对话框与子窗口控件
Windows内部定义了许多窗口类称为子窗口控件 Windows内部定义了许多窗口类称为子窗口控件 User32.dll为应用程序注册的子窗口控件共 为应用程序注册的子窗口控件共6 User32.dll为应用程序注册的子窗口控件共6个,创建 前不需要再注册: 前不需要再注册: 按钮(BUTTON)--用户点击可提供输入的子窗口 按钮(BUTTON)--用户点击可提供输入的子窗口 (BUTTON)-列表框(LISTBOX)--提供一个可供选择的列表 列表框(LISTBOX)--提供一个可供选择的列表 (LISTBOX)-文本框(EDIT)--用于编辑文本 (EDIT)-文本框(EDIT)--用于编辑文本 组合框(COMBOBOX)--由一个列表框和编辑控件组合而成 (COMBOBOX)-组合框(COMBOBOX)--由一个列表框和编辑控件组合而成 滚动条(SCROLLBAR)--用于显示比客户区大的数据对象 (SCROLLBAR)-滚动条(SCROLLBAR)--用于显示比客户区大的数据对象 静态文本框(STATIC)--用于显示静态文本信息 (STATIC)-静态文本框(STATIC)--用于显示静态文本信息 除静态文本框外,以上控件收到用户输入后会向主窗口 除静态文本框外, 发送WM_COMMAND WM_COMMAND消息 发送WM_COMMAND消息 2
mfc 控件顺序 -回复
mfc 控件顺序-回复关于MFC(Microsoft Foundation Class)控件顺序的话题,我将一步一步回答并解释相关的概念和使用方法。
MFC是微软公司提供的一种用于开发Windows应用程序的框架。
它使用C++语言编写,提供了一系列强大的类和方法,用于创建用户界面和处理用户交互。
在MFC中,控件是用户界面的基本构建块,用于显示和接收用户输入。
控件顺序指的是控件在界面上的布局顺序,即用户按下Tab键时,焦点将依次转移到下一个控件。
要实现控件顺序,我们需要以下步骤:1. 创建一个对话框或窗口类:MFC应用程序通常由对话框或窗口组成。
对话框是一个独立的窗口,它包含了一组控件,用于与用户进行交互。
窗口是一个包含在框架窗口中的独立区域,可以包含子控件。
2. 在对话框或窗口中添加控件:使用MFC提供的资源编辑器,我们可以很方便地在对话框或窗口中添加控件。
选择合适的控件类型,如按钮、文本框、复选框等,并将其拖放到对话框或窗口上。
3. 设置控件的tab顺序:默认情况下,MFC将控件的tab顺序设置为它们在对话框资源中的添加顺序。
但如果我们想自定义tab顺序,可以按照以下步骤操作:a. 打开对话框或窗口资源,选择要设置tab顺序的控件。
b. 在属性框中找到“TabStop”属性,并将其设置为TRUE。
这将允许该控件参与tab顺序切换。
c. 在属性框中找到“ID”属性,将其设置为唯一的非零值。
这将确定控件的tab顺序。
4. 处理tab键消息:在MFC应用程序中,如果我们想要自定义tab键的行为,可以处理WM_NEXTDLGCTL消息。
这个消息在用户按下tab键时会被发送到当前具有键盘焦点的窗口。
通过处理这个消息,我们可以指定下一个具有焦点的控件。
a. 在对话框、窗口或控件的消息映射中添加一个处理WM_NEXTDLGCTL消息的函数。
b. 在这个函数中,使用CWnd类的NextDlgCtrl函数获取下一个具有焦点的控件的句柄,并使用SetFocus函数将焦点设置在该控件上。
对话框及其应用
示例2:dxan:dialog{
label="确定图纸幅面"; :boxed_radio_row{label="幅面规格"; :radio_button{label="A0"; key="a0"; } :radio_button{label="A1"; key="a1"; } :radio_button{label="A2"; key="a2"; } :radio_button{label="A3"; key="a3"; } :radio_button{label="A4"; key="a4"; } :radio_button{label="A5"; key="a5"; value=5;} } ok_cancel; }
续前: :edit_box{label="半径R(mm)="; mnemonic="R"; key="R";value=25;} ok_cancel; }
示例4:
示例4的显示结果:
示例5:
示例5的显示结果:
第六讲 对话框的程序驱动
能够编写对话框文件,仅仅是迈出了对 话框设计的第一步,事实上,编写对话 框文件比较容易,而要控制对话框,使 之实现应有的功能,就要下更大的功夫。 要显示编写的对话框并有效控制它,需 要结合AutoLISP编程。AutoLISP提供了 处理对话框的各种管理函数,利用它们 可以实现DCL文件的各种控制。
(action_tile “accept” “(done_dialog)”) (action_tile “cancel” “(setq a –1) (done_dialog)”)
如何让对话框中的控件和对话框一起变小变大
MFC:如何让对话框中的控件和对话框一起变小变大默认分类2009-11-16 17:44:35 阅读409 评论4 字号:大中小订阅MFC:如何让对话框中的控件和对话框一起变小变大(2009-07-01 16:23:02)标签:电脑对话框mfc控件wm_size onsize()it分类:C/C++/VC 一个基于对话框的MFC界面,怎么样才能让对话框里的控件能和对话框同比例变小变大?今天我一直想解决这个问题,这是师姐留给我的任务。
经过在网上的大量搜素,终于找到了解决方法,其实比较简单。
一般情况下,我们新建的对话框,里面的“确定”和:取消”按钮,在对话框最大化得时候,不会一起变大的,而是保持原来的大小。
最简单的情况:当我们点击最大化按钮的时候,对话框会最大化,但是控件“确定”和“取消”不会跟着变大。
如果我们在对话框上面有多少控件,那么会很丑,而且很不实用,最大化本来就是想看的更清楚嘛。
我们可以采取下面的措施:对话框也是窗口,最大化是对窗口大小的改变,而在windows message handle中有个WM_SIZE的消息,该消息在窗口大小发生变化的时候会产生。
那么我们可以根据这个消息,在窗口大小发生变化的时候,利用MoveWindow()函数来重新设置各个控件的大小。
还是以上面最简单的情况为例子:1 首先要知道对话框大小是否改变,改变了多少,我们应该记录当前对话框的大小。
在对话框类中添加成员变量CRect m_rect 他是用来记录当前对话框的大小。
我们在OnInitDialog()函数中获取对话框创建时的大小:GetClientRect(&m_rect);2 增加消息WM_SIZE的消息响应函数OnSize():只要对话框大小发生变化,就会调用该函数。
3 在OnSize()函数中增加如下代码:(最简单的为例子,就一个确定按钮和取消按钮)void CTestDlg::OnSize(UINT nType, int cx, int cy){CDialog::OnSize(nType, cx, cy);// TODO: Add your message handler code herefor (int i=1;i<=2;i++) //因为是两个控件,所以这里用了循环{CWnd *pWnd;pWnd = GetDlgItem(i); //获取ID为i的空间的句柄,因为“确认”ID为1,“取消”ID为2 if(pWnd) //判断是否为空,因为对话框创建时会调用此函数,而当时控件还未创建{CRect rect; //获取控件变化前的大小pWnd->GetWindowRect(&rect);ScreenToClient(&rect//将控件大小转换为在对话框中的区域坐标//cx/m_rect.Width()为对话框在横向的变化比例rect.left=rect.left*cx/m_rect.Width();//调整控件大小rect.right=rect.right*cx/m_rect.Width();rect.top=rect.top*cy/m_rect.Height();rect.bottom=rect.bottom*cy/m_rect.Height();pWnd->MoveWindow(rect);//设置控件大小}}GetClientRect(&m_rect);// 将变化后的对话框大小设为旧大小}然后运行,当对话框最大化的时候,两个按钮也变大了。
MFC控件使用详细教程
MFC控件使用详细教程MFC(Microsoft Foundation Classes)是微软公司开发的一套面向对象的C++类库,旨在简化Windows应用程序的开发。
其中包括了一系列的控件类,用于构建Windows用户界面。
本文将介绍MFC控件的使用,并提供详细的教程。
1.创建MFC应用程序首先,打开Visual Studio开发环境,选择创建MFC应用程序项目。
在项目向导中,选择“对话框”应用程序类型。
2.添加控件到对话框在MFC应用程序中,用户界面的主要组成部分是对话框。
打开对话框资源文件(通常是一个名为“MainDlg”的文件),可以看到空白的对话框。
从工具箱中选择所需的控件,例如按钮(Button)、文本框(Edit Control)等。
点击工具箱中的控件,然后在对话框上绘制一个矩形,即可在对话框中添加该控件。
3.设置控件属性选中添加的控件,可以在“属性”窗口中设置其属性。
例如,可以设置按钮的文本、大小、位置等。
4.响应控件事件控件可以触发各种事件,例如按钮点击事件。
为了响应这些事件,我们需要添加相应的事件处理程序。
在资源视图中,右键点击对话框资源文件,选择“添加事件处理程序”。
然后,选择要响应的事件,例如按钮的点击事件。
在出现的对话框中,输入事件处理程序的名称,并选择成员变量的名称。
点击“确定”后,Visual Studio会自动生成事件处理程序的代码。
5.控件的常用操作- 设置控件的文本:使用SetWindowText函数,例如SetWindowText("Hello");- 获取控件的文本:使用GetWindowText函数,例如CString str; GetWindowText(str);- 启用或禁用控件:使用EnableWindow函数,例如EnableWindow(FALSE)可以禁用控件;- 显示或隐藏控件:使用ShowWindow函数,例如ShowWindow(SW_HIDE)可以隐藏控件;- 设置或获取控件的位置、大小:使用SetWindowPos和GetWindowRect函数,例如SetWindowPos(NULL, x, y, width, height)可以设置控件的位置和大小;- 样式和外观设置:使用ModifyStyle和SetWindowLong函数,例如在按钮上设置图标和文字风格。
KingSCADA初级教程-第七章-趋势曲线
第八章趋势曲线本章内容定义变量的记录属性趋势曲线控件趋势曲线控件方法概述趋势曲线是用来反应变量随时间的变化情况,趋势曲线有两种:实时趋势曲线和历史趋势曲线。
KingSCADA3.1提供的趋势曲线控件既可以显示实时趋势曲线又可以显示某一时间段的历史趋势曲线,并且提供了丰富的控件方法和控件事件,使趋势曲线的查询显得更加灵活、方便。
第一节定义变量的记录属性要想查询变量的历史趋势曲线,就需要定义变量的记录属性。
在KingSCADA3.1开发环境的数据词典中双击“液位”变量,弹出变量属性对话框,选择“历史”选项卡,设置变量的记录属性,如图8-1所示:图8-1记录属性设置对话框当“液位”值变化时,系统自动保存该数值。
第二节趋势曲线图素趋势曲线的展示是通过趋势曲线图素来实现的,图素的使用方法如下:第一步:在KingSCADA3.1画面编辑器中打开已建立好的画面:趋势曲线画面。
第二步:在图形编辑器中,执行“对象”菜单→“扩展图素”→“趋势曲线”命令或者单击工具箱中的图标→鼠标移到画面中,光标呈‘+’状,按住鼠标左键并拖动绘出一趋势曲线窗口,如图8-2所示:图8-2趋势曲线窗口同时弹出窗口属性对话框,对话框设置如图8-3所示:图8-3曲线窗口属性对话框其他属性可根据需要设置。
第三步:选中图8-2曲线窗口→单击鼠标右键→在弹出的菜单中执行“编辑”命令→鼠标单击标题栏(位于曲线窗口的上面)→弹出标题栏属性对话框,对话框设置如下:图8-4标题栏属性设置第四步:选中图8-2曲线窗口→单击鼠标右键→在弹出的菜单中执行“编辑”命令→鼠标单击网格区(位于曲线窗口中间)选中此区域→在该区域中单击鼠标右键→在弹出的右键菜单中执行“添加曲线”命令→选中添加的曲线后同时弹出曲线属性对话框,如图8-5所示:图8-5曲线属性对话框在DataSource属性中连接“液位”变量,曲线颜色设置为:绿色。
其他属性可根据需要设置。
第五步:利用同样方法,在网格区中添加一条曲线,连接变量temperature,曲线颜色分别为:蓝色。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所有的实现方法最终都是调用Draw()函数
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
16 16
redraw的类型
立即重绘整个控件
CCoeControl::DrawNow() 在程序初始化时采用
一旦有机会就重绘
整个窗口: void CCoeControl::DrawDeferred() const 部分窗口: void RWindow::Invalidate(const TRect&)
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
10 10
图形设备接口GDI
抽象类CGraphicsContext(图形上下文)定义了一致的接口 派生类CWindowGc和CFbsBitGc具体实现了这些接口 可以直接使用CFbsBitGc绘图,但不推荐:
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6 8 8
Drawing
virtual void Draw(const TRect& aRect) const; 负责产生控件的图形化外观 重要提示
基类中的该函数为空,在派生类中如果不实现该函数的话控 件将不可见 该方法由应用程序框架调用,不要自己调用该函数 方法是const,意味着你在Draw()中不能更改任何成员变 量,或者调用任何不是const的函数。 该函数不允许leave,因此你必须用TRAP封装可能leave的 函数
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
15 15
应用发起的重绘
通常是某个内部状态改变的结果 实现方法有以下几种:
Invalidate控件窗口的某部分,让window server发送一 个redraw消息 请求CONE立即重绘整个控件 立即重绘控件的某个部分
2005-12-6 2005-12-6
14 14
系统发起的重绘
1. 当window server检测到可能使一个区域无效的事 件
对话框/菜单不再需要时 启动一个GUI程序时
2. 发送redraw消息给拥有窗口的应用程序 3. 应用程序通过CONE发送消息给相关的控件 4. 调用控件的Draw()函数
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6 22 22
点击事件的处理
60系列并不支持笔写输入 但模拟器支持笔的点击
系统提供的常用控件有
按钮 编辑器 文本标签 列表框
可以内嵌其它控件(又称定制控件,或者复合控件)
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
5 5
CCoeControl
所有对屏幕的操作都是在控件上进行
控件从CCoeControl继承而来 控件是屏幕上的一个矩形区域 控件占据窗口的全部或者部分
2005-12-6 2005-12-6 21 21
CCoeControl对按键事件的处理
TKeyResponse OfferKeyEventL(const TKeyEvent& aEvent, TEventCode aType) TKeyResponse CMyGameView::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) { switch(aType) { case EEventKey: if(aKeyEvent.iScanCode == EStdKeyNkp5 || aKeyEvent.iScanCode == EStdKeyDevice3) { iMyGameEngine->Fire(); return EKeyWasConsumed; } break; case EEventKeyDown: … case EEventKeyUp: … } return EKeyWasNotConsumed; }
被派生类重载的函数
OfferKeyEventL() Draw()
所拥有的函数可以分为以下三类
初始化 Drawing 用户输入处理
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
7 7
初始化
class CAbcContainer : public CCoeControl { public: // Constructors and destructor void ConstructL(const TRect& aRect); ~CAbcContainer(); private: // Functions from base classes void SizeChanged(); void Draw(const TRect& aRect) const; }; void CAbcContainer::ConstructL(const TRect& aRect) { CreateWindowL(); SetRect(aRect); ActivateL(); }
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
18 18
处理按键事件
控件能够检测并处理按键事件 按键事件的处理是独立于资源文件定义的热键处理之 外的 UI框架已经实现了大部分的按键处理 典型应用
导航键 选择键
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-栈
按键事件由系统通告给对其感兴趣的控件
在一个特殊的数据结构(CONE控件堆栈)中登记感兴趣的 控件 系统给控件发送OfferKeyEventL事件
CONE控件堆栈中的控件被一一通告事件的发生,直 至某个控件宣称接收了该事件
控件按优先级被通告事件的发生 控件必须告知系统是否接收了该事件
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
13 13
控件的重绘(redraw)
更新在屏幕上的显示 两种类型
系统发起的
window server 我们“必须”重绘控件
应用程序发起的
内部状态改变 我们“想要”重绘控件
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
立即重绘已知无效的部分
void CSemView::DrawSunNow() const { Window().Invalidate(iSunArea); ActivateGc(); Window().BeginRedraw(iSunArea); DrawSun(); Window().EndRedraw(); DeactivateGc(); }
在析构的时候将控件从CONE控件堆栈中注销
CtestAppUi::~CtestAppUi() { if (iAppContainer) { RemoveFromStack( iAppContainer ); delete iAppContainer; } }
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
第七章 控件和对话框
邹仕洪,博士 网络与交换国家重点实验室 宽带网研究中心 zoush@
/~ZouShihong
网络与交换国家重点实验室 网络与交换国家重点实验室 宽带网研究中心 宽带网研究中心
2005-12-6 2005-12-6
1 1
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6 17 17
更多Draw()的信息
参数aRect
指定重绘的区域 相对于控件的原点(左上角)
对于简单控件,通常重绘整个控件 对于复合控件,只重绘部分控件 防止屏幕闪烁
只重绘位于无效区域的部分 不要短时间内多次重绘某个区域 尽量避免大面积的重绘
如果没有任何控件宣称接收一个事件,则最后将由 AppUi在它的CMyAppUi::HandleKeyEventL()中处 理该事件
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
20 20
AppUi对按键事件的处理
在CONE控件堆栈中登记控件
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
11 11
推荐的绘图方式
建议在程序中使用CWindowGc提供的接口
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
应用程序的视图使用至少一个控件 控件可以处理用户的输入事件
键盘事件 鼠标事件
网络与交换国家重点实验室宽带网研究中心 网络与交换国家重点实验室宽带网研究中心
2005-12-6 2005-12-6
6 6
CCoeControl
是所有控件的基类 被派生类直接调用的函数
SetRect() CreateWindowL()
4 4
CCoeControl
可以作为视图的基类
传统的EIKON视图架构-container dialog
负责应用程序视图区域的显示工作
一个应用程序的界面分为三部分