第三天 对话框、常用控件
一、对话框
1)模态对话框
a)资源视图 ->Dialog -> 右击 -> 插入Dialog
b)创建对话框对象 CDialog
c)以模态方式运行 CDialog::DoModal
2)非模态对话框
a)资源视图 ->Dialog -> 右击 -> 插入Dialog
b)创建对话框对象,需要在 .h 的地方声明为成员变量 CDialog
c)创建对话框(在构造函数或OnCreate(), 目的只创建一次)CDialog::Create
d)显示窗口 CWnd::ShowWindow
3)自定义对话框类(重要)
a)资源视图 ->Dialog -> 右击 -> 插入Dialog
b)点击对话框模板 -> 右击 -> 添加类
c)多出来一个自定义的类, .h 类中有个枚举和对话框关联 enum{IDD=IDD_DIALOG2}
二、基于对话框(控件)编程
1)基于对话框应用程序框架
a)应用程序类:继承于 CWinApp
InitInstance():程序入口地址
b)对话框类:继承于 CDialogEx
OnInitDialog():对话框的初始化工作
DoDataExchange():控件和变量的关联和交换
三、常用控件
1)静态控件CStatic(Qt中的标签QLable)
显示一些文字信息
a)Caption:修改显示内容
b)ID:xxx_STATIC,静态ID,不响应任何消息(事件)
2)按钮CButton
a)Caption:修改显示内容
b)处理消息:BN_CLICKED,用户点击按钮自动触发
Ⅰ)属性 -> 控制事件 -> 选择所需事件
Ⅱ)双击按钮,自动生成消息处理函数
3)逃跑按钮(类似Qt提升)
a)自定义按钮类(这里类名取得MyButton),继承于CButton
选择类视图最开始的文件夹 -> 右击 -> 添加类 -> MFC -> MFC类
Ⅰ)处理鼠标移动消息 WM_MOUSEMOVE
Ⅱ)获取父窗口指针 CWnd::GetParent
Ⅲ)获取父窗口客户区域的范围 CWnd::GetClientRect
Ⅳ)获取按钮的范围 CWnd::GetWindowRect
Ⅴ)产生随机坐标 rand()%w
Ⅵ)移动按钮的位置 Cwnd::MoveWindow
b)变量关联
选中按钮 -> 右击 -> 添加变量 -> 变量类型:MyButton ->变量:button
最终,button和我们所选中的按钮关联成功,操作button,相当于操作ui上的按钮(Qt的提升)
c)为按钮设置位图
Ⅰ)按钮属性:Bitmap -> True
Ⅱ)在对话框类中 OnInitDialog() 做如下处理
a)创建位图模板
b)创建位图对象 CBitmap
c)加载位图资源 CBitmap::LoadBitmap
d)按钮设置位图 CButton::SetBitmap
e)获取图片大小 CBitmap::GetBitmap
f)重新设置按钮大小(