对话框主要分为两个类型,即模式对话框和非模式对话框。当模式对话框弹出后,无法操作它的父窗口或者上一级窗口,直到关闭该对话框为止。图4-3 插入对话框资源用于测试模式对话框图4-4 修改对话框的外观和属性5)选中编辑好的对话框资源,执行View→ClassWizard命令,或按快捷键<Ctrl+W>打开类向导。图4-8 查看运行结果单击“关于”按钮弹出关于对话框,在关闭关于对话框前,主对话框是不可以操作的,这就是模式对话框的特点。......
2023-11-25
无论是模式对话框还是非模式对话框,都可以直接申请基类CDialog对象来创建。创建CDialog派生类的原因是,在派生类中可以接收对话框的消息映射和虚函数回调,响应来自用户的操作和系统事件。
窗口创建时的消息和虚函数包括WM_CREATE、WM_INITDIALOG和PreSubclassWindow等;窗口关闭时的消息和虚函数包括WM_CLOSE、WM_DESTROY、OnOK和OnCancel等。有些消息是所有窗口都通用的,例如,WM_CREATE、WM_CLOSE和WM_DESTROY等。有些消息和虚函数是对话框专用的回调函数,例如,WM_INITDIALOG消息以及OnOK、OnCancel等虚函数。
通过MSDN的说明可以查看到,WM_CREATE和WM_INITDIALOG都是窗口刚创建时的回调消息,当窗口还未显示出来之前,对窗口作预先处理的回调函数。WM_CREATE是所有窗口通用的创建时回调消息,用于包括对话框、MDI或者SDI等任何窗口的初始化,对应的消息映射函数是OnCreate。可以在该函数中编写代码,在窗口刚创建还未显示时,修改父窗口的属性或者创建内部子窗口。WM_INITDIALOG对话框是对话框专用消息,最常用来初始化对话框及其内部控件,对应的消息映射函数是OnInitDialog。基类函数CDialog::OnInitDialog执行过程将所有对话框资源模板内的控件都创建完毕。因此,可以在该函数中,编写代码来对子窗口作初始化设置。
打开第1节建立的“Test”工程,本节继续演示对话框启动过程的回调函数。
1)在类视图中的主对话框类上单击鼠标右键,在弹出的快捷菜单中,选择“Add Windows Message Handler”命令,如图4-14所示。
2)在左边的消息列表中,选中WM_CREATE消息再单击“Add Handle”按钮,或者直接双击该列表项添加一个消息映射函数,如图4-15所示。
图4-14 消息映射管理器
图4-15 添加消息映射函数
3)WM_CREATE转移到右边列表中,代表已经添加了该消息的消息映射函数,如图4-16所示。
图4-16 已经添加消息映射函数
4)单击“Edit Existing”按钮,修改OnCreate函数的代码。
(www.chuimin.cn)
5)编译并运行,测试代码,可以看到在对话框弹出之前标题已经被修改,如图4-17所示。
图4-17 查看运行结果
6)修改OnInitDialog函数的代码。
7)编译并运行,测试代码,如图4-18所示。
图4-18 查看修改后的运行结果
通过两次修改窗口标题,可以判断出OnCreate函数的回调时间早于OnInitDialog。
8)再修改两个函数的代码,添加一行代码并测试。
测试结果说明,在OnInitDialog函数中子窗口都已经创建完成,可以任意对子窗口进行初始化操作。而在OnCreate函数中,对话框中的控件子窗口还未创建,不可以操作控件窗口。
有关VC++就业培训宝典之MFC视频教程的文章
对话框主要分为两个类型,即模式对话框和非模式对话框。当模式对话框弹出后,无法操作它的父窗口或者上一级窗口,直到关闭该对话框为止。图4-3 插入对话框资源用于测试模式对话框图4-4 修改对话框的外观和属性5)选中编辑好的对话框资源,执行View→ClassWizard命令,或按快捷键<Ctrl+W>打开类向导。图4-8 查看运行结果单击“关于”按钮弹出关于对话框,在关闭关于对话框前,主对话框是不可以操作的,这就是模式对话框的特点。......
2023-11-25
当用户单击对话框标题栏上的关闭按钮后,可能顺次发生的回调包括WM_SYSCOMMAND消息、WM_CLOSE消息、CDialog::OnCancel虚函数和WM_DESTROY消息等。打开第1节建立的“Test”工程,本节继续演示对话框关闭过程的回调函数。当单击系统关闭菜单或按钮,或者按<Alt+F4>组合键都不能关闭对话框,对话框不是真正地关闭而只是最小化了。所有以上其他回调函数都发生在对话框消失之前,并且可以取消继续关闭对话框窗口。图4-26 关闭对话框消息的流程......
2023-11-25
图5-1 插入新对话框资源图5-2 编辑登录对话框3)添加一些控件并修改控件的属性,见表5-1。表5-1 “登录”对话框的控件属性4)在“登录”对话框上单击鼠标右键,在弹出的快捷菜单中,选择“ClassWizard”命令,或按快捷键<Ctrl+W>,如图5-3所示。图5-3 打开类向导图5-4 创建登录对话框的关联类6)在登录对话框资源中双击“登录”按钮,建立消息映射函数OnOK并编写代码。......
2023-11-25
打开本章第1节建立的“Test”工程,本节继续演示非模式对话框的调用过程。1)通过菜单命令或者按快捷键<Ctrl+1>再插入一个对话框,用于测试非模式对话框,如图4-9所示。7)非模式对话框的特点如下。①在关闭模式对话框前,不阻挡对背景窗口的操作。②使用CDialog::Create函数创建非模式对话框,该函数是非阻塞函数。......
2023-11-25
打开本章第1节建立的“QQ”工程,本节继续演示账号及权限管理与登录对话框的组合。表5-2 “权限管理”对话框的控件属性4)通过类向导为IDD_PRIOR_DLG建立一个对话框类“CPriorDlg”,如图5-8所示。12)在权限管理对话框中,分别双击增、删、改的3个按钮,建立消息映射函数。登录成功后进入主对话框单击“权限管理”按钮,进入“权限管理”对话框添加一些账户信息,然后使用新添加的账户重新登录,如图5-16所示。......
2023-11-25
在Windows应用程序中,设备环境与图形对象协同进行绘图显示工作。就像画家绘画一样,设备环境好比是画家的画布,图形对象好比是画家的画具。1)GDI对象包括六种类型,全部由CGdiObject类派生,如图7-14所示。④CBitmap(位图):用于显示和处理点阵图像的GDI对象。图7-14 GDI对象2)颜色类型变量COLORREF的定义。typedef DWORD COLORREF;typedef DWORD *LPCOLORREF;COLORREF是4字节(32位)变量,用于描绘一个颜色时对应于十六进制格式是0x00bbggrr。3)RGB宏函数颜色处理函数。常见颜色的RGB数值见表7-2。......
2023-11-25
CBrush类的主要成员见表7-4。表7-4 CBrush类的主要成员1)用于填充的阴影线风格主要包括以下几种。创建一个工程名为“Brush”的对话框程序,用于演示选用不同画刷进行绘画的效果。2)在资源视图中,单击鼠标右键,在弹出的快捷菜单中,选择“Import”命令导入位图,如图7-16所示。图7-19 查看运行结果CBrush类构造函数与CreateSolidBrush和CreateHatchBrush等函数的功能基本一样,都可以用于创建一个画刷。一般当使用新画刷绘画结束后,最好恢复选择回旧画刷。......
2023-11-25
参数pin表示所要获取模拟量电压值的引脚,返回为int型。Arduino中的PWM的频率大约为490 Hz。例程:3.高级I/O1)Pulseln该函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或者LOW。使用delay函数期间无法做其他工作。1)attachInterrupt该函数用于设置外部中断,函数有3个参数,分别表示中断源、中断处理函数和触发模式。1)Serial.begin()该函数用于设置串口的波特率。......
2023-06-26
相关推荐