MFC DAY10 11 12

一 MFC对话框
1 DoModal函数的执行过程
1.1 查找和加载对话框资源
1.2 将父窗口设置为不可用状态
1.3 创建和显示对话框
1.4 进入对话框的消息循环
1.5 点击OK或者Cancel或者关闭按钮,隐藏对话框窗口
1.6 将父窗口设置为可用的和活动的
1.7 销毁对话框窗口
1.8 释放对话框资源
1.9 返回执行结果(IDOK/IDCANCEL)
二 对话框数据交换技术(DDX)
引入对话框数据交换技术的目的方便的操作控件。将对话框类的
成员变量与对话框的控件绑定,通过操作成员变量达到操作控件
的目的。
1 相关函数:
1.1 需要一系列的绑定函数
(绑定函数的作用就是将成员变量与控件绑定)
DDX_Control(pDX,控件ID,控件类型的变量名);
DDX_Text(pDX,控件ID,值类型的变量名);
1.2 数据交换函数DoDataExchange
包含了对话框中所有的绑定函数。
CDialog::OnInitDialog函数间接调用DoDataExchange函数,
在对话框初始后,控件与变量已经绑定了。
1.3 UpdateData(BOOL)-当用户在控件中输入的值与控件绑定的值
有数据交换时,调用该函数。
UpdateData(TRUE)-控件的值传递给成员变量
UpdateData(FALSE)-成员变量的值传递给控件
2 使用DDX做一个登录例子
三 MFC控件的使用
1 静态控件(CStatic)包括图片、静态文本和分组框。控件的默认ID都是
IDC_STATIC,如果需要为静态控件绑定成员变量时,首先需要
修改控件的ID。
2 按钮控件(CButton)包括一般按钮、复杂按钮和单选按钮。单选
按钮如果需要绑定成员变量,需要选中group属性。单选按钮的
分组,同一组按钮的Tab键顺序要连续,然后在Tab键编号较小
的按钮设置group属性,有几组设置几个。
3 组合框控件和列表框控件
组合框通常是单选,列表框可单选和多选。组合框可以通过
属性设置数据项。
4 播放动画的例子
4.1 文件对话框
CFileDialog(
BOOL bOpenFileDialog, //表示打开或者另存为对话框
LPCTSTR lpszDefExt=NULL,用在另存为对话框表示默认扩展名
LPCTSTR lpszFileName = NULL,用在另存为对话框表示默认文件名
//对话框的样式
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,//设置文件类型的过滤字符串
CWnd* pParentWnd = NULL //父窗口,通常为NULL
);
设置文件类型的过滤字符串的格式:
1 多个数据项之间以"|"隔开,整个字符串以"||"结束;
2 每一个数据项由两部分组成,显示部分和过滤部分。这两
部分以"|"隔开。
"视频文件(*.avi)|*.avi|所有文件(*.*)|*.*||";
4.2 CListBox和CComboBox的使用
4.2.1 添加数据项
CListBox::AddString
CComboBox::AddString
4.2.2 查找数据项
CListBox::FindString LB_ERR
CComboBox::FindString CB_ERR
4.2.3 删除数据项
CListBox::DeleteString
CComboBox::DeleteString
4.2.4 获取/设置当前选择的数据项
CListBox::GetCurSel/SetCurSel
CComboBox::GetCurSel/SetCurSel
4.2.5 获取/设置数据项的附加数据
CListBox::GetItemData/SetItemData
CComboBox::GetItemData/SetItemData
...

---------------------------------------

一 控件的使用
演示旋转按钮(CSpinButtonCtrl)、进度条(CProgressCtrl)和
滑块控件(CSliderCtrl)的使用.
1 设置控件表示的数值范围
SetRange/GetRange
SetRange32/GetRange32
2 设置控件的步长或者增量
CSpinButtonCtrl::SetAccel
CProgressCtrl::SetStep
CSliderCtrl::PageSize
CSliderCtrl::LineSize
3 设置/获取当前的位置
SetPos/GetPos
二 列表控件
1 相关类
CListView-本质是一个视图类。相当于在CView的客户区包含了
一个CListCtrl控件。
GetListCtrl()得到视图包含的控件。
CListCtrl-本质是一个控件,常用于对话框显示数据。
2 分析CListCtrl控件:
控件可以以不同的样式显示数据,包含图标、小图标、列表和
报表等四种样式。 如果以报表的样式显示数据,控件还可以
包含多个列。一个控件包含多个数据项。每个数据项的信息包
括图标和文本。不同的数据项的图标也是不一样的,所以,控件
包含了两个图标列表(大图标列表和小图标列表)。
3 控件的使用
3.1 设置控件的图标列表(大图标列表和小图标列表)
CListCtrl::SetImageList
3.2 修改控件的显示风格
CWnd::ModifyStyle
3.3 添加列
CListCtrl::InsertColumn
3.4 添加数据项
CListCtrl::InsertItem
3.5 设置列文本
CListCtrl::SetItemText
3.6 设置/获取数据项的附加数据
CListCtrl::SetItemData/GetItemData
3.7 设置控件的背景图片
CListCtrl::SetBkImage
需要有Ole库的初始化 AfxOleInit();
3.8 设置文本的背景色
CListCtrl::SetTextBkColor(CLR_NONE)
...
三 树控件
1 相关类
CTreeView-是一个视图,在CView的客户区包含了一个CTreeCtrl
控件。调用GetTreeCtrl()得到视图包含的控件
CTreeCtrl-是一个控件,更多的用于对话框上显示数据
2 CTreeCtrl的使用
2.1 分析CTreeCtrl
CTreeCtrl控件主要用于显示具有层次结构的数据。树控件是
由一个个的节点组成,每一个节点的信息包括文本和图标,
而且节点的图标可以有选中和未选中两种图标。
2.2 具体使用
2.2.1 设置图标列表
CTreeCtrl::SetImageList
2.2.2 插入节点
CTreeCtrl::InsertItem
2.2.3 设置节点高度
CTreeCtrl::SetItemHeight
2.2.4 设置节点的展开状态
CTreeCtrl::Expand
2.2.5 设置/获取树节点的附加数据
CTreeCtrl::SetItemData/GetItemData
...
几乎所有的函数操作时,都会有节点句柄作为参数!
VC扩展界面库...

四 属性页对话框
1 分类
标签式属性页和向导式属性页
2 相关类
CPropertyPage类-对话框类,拥有自己的资源窗口。
CPropertySheet类-框架窗口类,包含多个页面对话框。
3 标签式属性页(例子:使用属性页设置图形的线宽和颜色)
用于设置参数、选项等配置

---------------------------------

一 属性页对话框
1 分类
标签式属性页和向导式属性页
2 相关类
CPropertyPage类-对话框类,拥有自己的资源窗口。
CPropertySheet类-框架窗口类,包含多个页面对话框。
3 标签式属性页(例子:使用属性页设置图形的线宽和颜色)
用于设置参数、选项等配置
3.1 插入对话框资源,注意对话框资源的类型,双击生成相应
的类,注意父类一定是CPropertyPage。重复这个步骤,可以
添加多个页面对话框。
3.2 添加CPropertySheet类的子类CSheet类,并且添加页面
对象,在CSheet类的构造函数中,将页面对象添加到表单。
AddPage(&m_page1);
AddPage(&m_page2);
3.3 在菜单的消息处理函数中,创建和显示属性页
CPropertySheet::DoModal
3.4 将应用按钮设置为可用状态
CPropertyPage::SetModified
3.5 消息处理(通过重写虚函数的方式)
CPropertyPage::OnApply
CPropertyPage::OnOK
CPropertyPage::OnCancel
4 向导式属性页
通常用于引导用户按照设定的步骤一步步的选择或者设置最终
完成某种功能。
4.1 与3.1 相同
4.2 与3.2 相同
4.3 在创建和显示对话框前,先设置为向导模式
CPropertySheet::SetWizardMode()
CPropertySheet::DoModal()

4.4 设置每一个页面的向导按钮,右击CPage1类,选择添加
虚函数,在列表中选择OnSetActive(),在函数中:
((CPropertySheet*)GetParent())->SetWizardButtons(
PSWIZB_NEXT);
按照同样的方式,设置CPage2和CPage3这两个页面的
向导按钮。
4.5 获取用户在每一个页面中选择的信息。通常的办法给控件
绑定成员变量。
4.5.1CPage1的处理:
为单选按钮和列表框绑定成员变量。添加CPage1
的WM_INITDIALOG消息处理函数,在OnInitDialog函数中:
m_wndCity.AddString("北京");
m_wndCity.AddString("上海");
m_wndCity.AddString("天津");
m_wndCity.AddString("重庆");
4.5.2 为空判断
右击CPage1类,选择添加虚函数中,选择OnWizardNext,
在函数中:
UpdateData(TRUE);
if (-1==m_nJob)
{
MessageBox("请选择您的职业!");
return -1;
}
if (m_strCity=="")
{
MessageBox("请选择您所在的城市");
return -1;
}
4.5.3 CPage2、CPage3类的处理,为控件绑定成员变量。
分别在 OnWizardNext和OnWizardFinish中为空判断。
注意 OnWizardFinish的返回值类型是BOOL。
4.6 在视图对菜单的消息处理函数OnWizardProp中:
4.6.1 在视图中添加成员变量并在构造函数中初始化
int m_nJob;
CString m_strCity;
BOOL m_bFlag[4];
CString m_strSalary;
4.6.2 在视图类的OnWizardProp将页面中的数值传
递给视图:
// 创建和显示向导式属性页
CSheet sheet("向导式属性页");
//设置显示的方式为向导模式
sheet.SetWizardMode();
if(ID_WIZFINISH!=sheet.DoModal())return;
//1将每一个页面的数值传递给视图
m_nJob=sheet.m_page1.m_nJob;
m_strCity=sheet.m_page1.m_strCity;
//2 使得视图重绘以显示新的数据
Invalidate(TRUE);
4.6.3 在OnDraw函数中,输出各个变量的值

MFC 多线程
COM 4天
数据库(odbc和ado)+网络通信(socket)3天
vod视频点播系统 (4)

MFC DAY10 11 12,布布扣,bubuko.com

时间: 2024-10-14 19:08:12

MFC DAY10 11 12的相关文章

《软件测试管理公开课》2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海,欢迎报名!

课时:13小时(2天) 在软件开发流程中构筑软件质量 --软件测试管理     2015.8.7~8 深圳 2015.8.11~12 北京 2015.8.18~19上海   [课程背景] 据中国软件行业协会研究报告显示,2010年1-11月,我国软件业呈快速增长态势,同比增长30%,增速比去年同期提高8.6个百分点,软件产业已成为中国高科技发展重要支柱之一,但中国软件产品质量保证手段以及测试流程和管理的规范性,与国外同行(美国.印度等)存在较大的的差距.      在软件业较发达的国家, 软件测

atitit.Oracle 9 10 11 12新特性attilax总结

atitit.Oracle 9  10 11  12新特性 1. ORACLE 11G新特性 1 1.1. oracle11G新特性 1 1.2. 审计 1 1.3. 1.   审计简介 1 1.4. 其他(大部分是管理功能) 2 2. Oracle 12c 的 12 个新特性 2 2.1. 2 Improved Defaults 增强了DEFAULT, default目前可以直接指代sequence了,同时增强了default充当identity的能力 2 2.2. Easy Top-N an

TeamWork#3,Week5,Scrum Meeting 11.6, 11.7, 11.11, 11.12

11.6:到目前为止基本已完成相关知识的学习,各方面工作都开始进行,一开始进行比较慢. 11.7:项目遇到困难,需要补充相关知识,进度慢了下来. 11.11:各方面工作进展比较顺利,没有什么大问题. 11.12:爬虫程序出现问题,没有考虑到网站信息更新导致的爬虫程序可变性,下一步要更换爬虫结构.同时进行UI设计和改善.

2014年7月11~12日,杨学明老师《软件测试管理》公开课(深圳站)成功举办!

2014年7月11~12日,<在软件开发流程中构筑软件质量—软件测试管理>公开课在深圳市CBD某酒店准时开课,来自智能电视.软件.手机.汽车电子.芯片.IT系统集成等企业的研发总监和测试部门经理等参加了此次培训,此次培训由研发管理资深顾问.产品测试专家杨学明先生主讲,本次课程采用全程案例分析讲解,让学员从一开始就融入到软件测试的场景中去,根据测试中所遇问题进行针对性讲解和讨论:课堂上许多企业都提出了很多高难度和有挑战性的问题,杨老师耐心地为各企业学员进行解答,很多学员代表表示对解决方案非常满意

2016/11/12

我终于打拍了,分数果然好看了很多. 但是并没有A掉第三题 做法:求最长上升子序列 有两个原因:1.想多了,,以为要从上升和下降中取最优值,,结果还丢分了 2.虽然看过nlogn的最长上升子序列求法 ,但是并没有仔细看,考试的时候自己瞎扯了一个90分算法(实在想不起log是哪里来的了) 看了nlogn的做法后,发现差别在于我没有使用二分查找,改进之后会快很多 首先附上90分的瞎扯代码 1 #include<iostream> 2 #include<cstring> 3 #includ

Effective C++ 条款11,12 在operator= 中处理&ldquo;自我赋值&rdquo; || 复制对象时不要忘记每一个成分

1.潜在的自我赋值     a[i] = a[j];     *px = *py; 当两个对象来自同一个继承体系时,他们甚至不需要声明为相同类型就可能造成别名. 现在担心的问题是:假如指向同一个对象,当其中一个对象被删,另一个也被删,这会造成不想要的结果. 该怎么办? 比如:   widget& widget:: operator+ (const widget& rhs) {    delete pd;    pd = new bitmap(*rhs.pb);    return *thi

NOIp 11.11/12

最后一场比较正式的NOIp模拟赛,写一发小总结.题目没什么好说的,大部分很简单,先贴一下代码. 1111 T1 //string //by Cydiater //2016.11.11 #include <iostream> #include <cstring> #include <iomanip> #include <queue> #include <map> #include <ctime> #include <cmath&g

11.10/11.11/11.12 安装PHP511.13安装PHP7

- 11.10/11.11/11.12 安装PHP5 - 11.13 安装PHP7 - 扩展 - php中mysql,mysqli,mysqlnd,pdo到底是什么 - http://blog.csdn.net/u013785951/article/details/60876816 - 查看编译参数 http://ask.apelearn.com/question/1295 # 11.10安装PHP5 上 -  PHP官网www.php.net -  当前主流版本为5.6/7.1  1.   c

U盘 安装 CentOS 5.4 / Fefora 10/11/12

(下面是8G U盘 ) 1.  8G U盘,两个分区,都是FAT32(这样U盘也可以在Win下使用),由于Windows XP只能看到第一个FAT32分区,因此,将CentOS 5.4 的相关安装文件 放在 第二个分区中: 在Linux下用fdisk命令对8G U盘进行分区,如下(红色为输入): [[email protected] ~]# fdisk /dev/sda The number of cylinders for this disk is set to 30584. There is