MFC 向导创建的DLG对话框
theApp 声明一个全局唯一变量 调用cxxApp 构造函数
程序执行的顺序是
1 CXXXApp theApp //定义处 理解为 “唯一的一个APP对象 表示了我们的应用程序”
2 CxxxApp::CxxxApp 构造函数的定义
3 WinMain 程序入口
对话框程序的执行顺序如下
CxxApp::InitInstance MFC程序的入口
dlg对象 CxxDlg对象
Dlg构造函数
DoModal
OninitDlg
创建模态对话框
在按钮消息响应函数中 CXXXDlg dlg; dlg.domodal();
非模态对话框
创建 Create(0
CxxDlg *m_nonmodal; //添加在对话框类新的成员变量
HWND CreateWindow()
关闭非模态对话框
CWND::DestroyWindow(0
CWND::ShowWindow(SW_HIDE)
创建非模态对话框4步
1 添加新Dialog 资源
IDD_XXX
Class DlgNew;
2 在主窗口中类定义中加入
DlgNew *m_modal;
3 在OninitDlg 中m_modal=new DlgNew;
m_modal->CreateWindow(IDD_XXX,this);
4 在button相应函数中
m_modal->ShowWindow(SW_SHOW|其他样式)
5 WM_DestroyWindow
控件:静态文本框和按钮
在布局管理器中 调整TAB切换界面控件的顺序
静态文本框 CStatic 类
添加一个静态文本框后 在DoDataExchange后面
afx-msg 增加了一个宏 (控件ID号,响应函数) 的关联
文本框控件 CEdit类
属性可设置是否显示 等设置
GetDlgItem 得到控件
GetDlgItem->GetWindowText 得到内容
例如GetDlgItem(IDC_xxx_xxx)->GetWindowText(CSTRING xxx) 直接赋值
方法2 得到控件中的内容
DDX 即 Dialog Data Exchange
MFC提供了DDX机制,允许事先设定控件与变量对应交换
成员变量 --------------------> abl控件等
m_strText <------------------- 双向的交互
如何关联(针对VC6.0)
在IDC_XXX_XXX 处 class wizard 双击
也是在DoDataExchange中 进行的变量和IDC_xxx_xxx 的关联
例如
点击复制按钮将框1的值赋予框2
Cstring StrText;
GetDlgItem(IDC_xxx)->GetWindowText(xxx);
updatedata(true); //UpdateData 函数是一个更新机制函数 默认值为TRUE
m_strShow=m_strMsg;
UpdateData(false);
组合框 CComboBox类
1GetCurSel 可以得到当前选中的行,注意行引用号从‘0’开始
2 GetLBText 可以得到某一行的文本
获得组合框值得方法:
方法一 通过对组合框控件进行变量映射
1 可以将其映射成一个CString 类得对象
2 映射成CComboBox 类型的对象,通过调用对象获得选中的值
方法二 将组合框作为一个CWnd 对象,通过调用CWnd对象的GetWindowText方法,获得其当前显示的内容
其实很多控件都是CWnd对象,都可以用同样的方法获取内容。
列表控件 CListCtrl 类
CListCtrl封装了“列表视图控件” 功能
在OnInitDialog 中完成对控件初始化
GetItemCount() 获取列表行数值
此处LCPTSTR 第二个参数 用_T("xxx") 来转换
CFile类是所有文件的基类,派生于CObject
CFile open close flush write read
CFile::modeCreate 如果重复调用,会自动删除原文件,然后创建新的该名的文件
文本文件 ASC II码存储的文件 不能存储 例如位图 视频等文件
CFile->CStdioFile 该类对文本文件的操作更加方便
文本文件和二进制文件的区别 注意 /n /r 等转意符号
程序的异常处理
异常捕获格式
try
{
}
catch(类型,参数)
{
}
catch(){}
从try中抽出异常甩给catch,每一个catch都处理自己指定类型的异常
catch捕获异常的顺序依照从大到小的顺序写
三类典型异常
1 CException c++所有异常父类
2 _com_err&e 能捕获com组件的异常
3 ... 三个点 能捕获一切异常
GDI概述
windows图形设备接口 GDI 是为与设备无关的图形设计的,GDI负责系统与用户或绘图程序之间的信息交互,并控制在输出设备上显示图形或文字。
在使用GDI绘图时,必须要指定一个设备环境DC 将某个窗口或设备环境类得句柄指针关联七里啊,所有绘图操作与该句柄有关。
MFC中封装为CDC类
应用程序通过设备描述表的句柄来间接的存取设备描述表与属性。
CDC从CObject直接继承来。
子类 CClientDC 代表操作窗口DC
CPaintDC 以及 CWindowDC
CDC相关函数
1 CreateCompatibleDC 创建一个与指定设备兼容的内存设备上下文环境
2 SelectObject 选择对象到指定设备
SetStretchBltMode
BitBlt
StretchBlt
GDI绘图
CRect
CDC中几个基本图形绘制函数
Rectangle 矩形
Ellipse 椭圆
MoveTo 移动到某点
LineTo 点到点直线
绘图分2步进行
OnInitDialog() 初始化中使用
然后在OnPaint 中也必须有绘图函数 DrawLogo() 方法 //此处函数名打个比方 举例
因为先进行OnInitDlg,然后运行OnPaint
若OnPaint中没有绘图函数则无法显示图形
待续。。。