当前位置:文档之家› 基本控件编程步骤.ppt

基本控件编程步骤.ppt

◦ 对Cdialog编程,由于无法修改MFC源码,因此从Cdialog中 派生一个子类,比如叫做CMyDialog
◦ 在CMyDialog中实现我们自己想要做的功能代码,这就是 MFC编程
问题:对于标准控件,是否也需要这样做?
11
答案:
◦ 如果我们不需要对控件的外观和功能做改动,就不需要对 其进行派生,可以直接使用。否则,就需要派生一个控件 类,来自己写代码——比如,我要把编辑框当做按钮来使 用,或者要做一个三角形的按钮(很少)
CComboBox CEdit
CHeaderCtrl CHotKeyCtrl
CListBox CCheckListBox CDragListBox CListBox CProgressCtrl CRichEditCtrl CScorllBar CSliderCtrl CSpinButtonCtrl
CStatic CStateBarCtrl
CDocument
CWinApp
应用程序类
CDocItem
窗口类
CWnd
CException
CGdiObject
CFile
文件类
CDC
图形设备接口类
CMenu
菜单类
CDatabase
数据库类
CFrameWnd
CControlBar
控制条类
CDialogBar CStatusBar CToolBar
CDialog
13
1.起一个名字
4.点OK确定
2.选择变量类型 (稍后解释)
3.选择变量的 数据类型
14
Category有两种:value和control
◦ Control类型,就是添加控件对应的MFC类对象 ◦ Value类型,是添加与控件绑定的数值型变量,通过该变量
可以直接操作控件对应的变量。
Type
21
◦ Step1:打开类向导,选择控件、选择消息,点 会弹出提示,意思是,函数代码还需要手动删除。
◦ Step2: 在Dlg.cpp文件中,手动删除函数。 ◦ Step3: 在资源管理器中,删除对应的控件。 ◦ Step4: 在Resource.h中,删除对应的控件ID宏
如果第一步直接就把资源管理器中的图标删了,也不要 紧。打开Resource.h, 辨认出控件的ID,然后Alt+E+i,全局 搜索该ID,就能找到控件对应的 ON_BN_CLICKED ( IDC_ADD_BUTTON , OnAddButton ) 删除该行,再找后边对应的函数,在.h和.cpp文件中删除函 数即可
CTabCtrl CToolBarCtrl CToolTipCtrl
CTreeCtrl
控件类
CBitmap 位图类 CBrush 画刷类 CFont 字体类 CPen 画笔类
CPoint CRect CSize CString CTime
简单数据 类型
3
思考要实现的功能 控件布局 控件属性修改 通过类向导添加控件变量 通过类向导添加控件消息响应函数 手动添加控件辅助变量或函数 =======完成程序框架========= 完善添加的函数 调试测试
1. Dlg.h 中的变量定义 2. Dlg.cpp 中构造函数中的变量初始化 3. Dlg.cpp 的DoDataExchange()中对应的DDX行 4.删除Resource.h中的ID
23
20
这里我们详细讲解一下控件的手工删除方法。
◦ 在编程中,如果添加了一个控件,后期觉得没用,就删除 掉了,再次编译的时候会出错。这是因为删除过程没有使 用ClassWizard,而是直接在布局界面中删除。这样就会导 致清理不彻底。
◦ 因此我们详细讲解手工删除控件的方法。这也是控件手工 编程的重要部分。
22
◦ Step1:打开类向导,选择控件、选择变量页面。 ◦ Step2: 选择删除变量,ClassWizard将自动删除相关代码。 ◦ Step3: 在资源管理器中,删除对应的控件。 ◦ Step4: 在Resource.h中,删除对应的控件ID宏
如果先删除了控件,则需要手动删除该控件对应的变量, 包括三行:
◦ 对于control类型,type就是其控件类 ◦ 对于value类型,type有多种,如Cstring,int,float。。。
15
在dlg中添加一个button和一个edit
◦ 为button添加control变量 ◦ 为edit添加string变量
观察dlg类头文件的变化
自动添加的对象代码
16
思考要实现的功能 控件布局 控件属性修改 通过类向导添加控件变量 通过类向导添加控件消息响应函数 手动添加控件辅助变量或函数 =======完成程序框架========= 完善添加的函数 调试测试
17
如果用到其他相关的功能,此时在类中添加 比如,额外存放数据的普通变量, 算法实现函数等
通过快捷键 Ctrl+W激活 一定要记住
7
只用到前两个标签页 Message Maps : 向类中添加消息响应函数 Member Variables: 向类中添加并绑定成员变量
8
1.选择Project择要添加 的控件消息
5.点击进入代 码编写处
Windows 程序设计
于东 2015,第2周
控件是一些行为标准化了的窗 口元素。
Windows提供了一组标准控件。 在MFC中,为每种控件实现了
一个类。 课程内只讲编程思想以及一些
通用的方法 具体控件的使用方法,看视频
自学
2
对象类
CObject
CCmdTarget
文档类
CWinThread
18
下面,通过一个具体的例子,来说明一下如何在程 序中灵活运用上述知识,实现一个功能。
编写一个计算器程序
19
ClassWizard帮助我们实现了控件变量添加、消息响 应添加、消息函数添加等功能。带来了方便,但也 使得整个编码比较零散。
实际上,ClassWizard进行的工作,都是在编写代码。 如果脱离向导,直接去添加代码,也能实现同样的 功能。
4
每种控件都有自己的若干属性。 在控件右键菜单中可以看到属性页
按钮属性页的“常规”项
编辑框属性页的“样式”项
5
每个控件必须有唯一的“ID”,一般不需要改 ID会以宏的形式自动定义并记录在resource.h中 在后面编程中,控件的ID也作为该控件使用的唯一
标识
我们添加的控件的ID
6
通过类向导,可以替代人工来编写部分通用代码
9
消息响应函数以类的成员函数形式添加 MFC的类与普通C++类最大的区别,一是有复杂的继
承体系,第二就是有“消息响应”代码。 下节课详细讲解。 本课中,牢记并熟练使用以上步骤即可。
10
MFC编程中,我们通常以继承方式使用MFC中的类。
◦ 比如,标准的Cdialog类中,没有包括任何功能代码,直接 使用该类对象,创建的是一个空对话框。
那么问题就来了:如何对控件编程?
◦ MFC中,在界面上布局变量后,程序仅生成了一个ID与之 对应,控件本身还没有出现在代码中。
◦ 需要通过组合的方式,在现有的CMyDialog类中,添加控 件类变量,来实现对控件的编程。
12
1.选择Project
2.选择要编辑的类
3.选择要编辑 的控件ID
4.点击 添加变量 弹出下一页
对话框类
CColorDialog CFileDialog
CFindReplaceDialog
CFontDialog
CView
视图类
CCtrlView
CEditView CListView CRichEditView CTreeView
CScrollView
滚动条类
CFormView
CAnimateCtrl CButton CBitmapButton
相关主题