MFC学习笔记之对话框

0x00 数据交换和检验

在MFC中,改变控件的属性,其会通过对话框类自动生成的成员函数DoDataExchange()来实现修改相应关联的变量的值。这种现象称为对话框的数据交换和检验机制。需要注意的是,在该机制下DoDateExchange()并不是被自动调用,需要开发者在程序中调用CDialogEx::UpdateData()函数,再由其自动调用DoDataExchange()函数。

UpDateData()函数原型如下:

BOOL UpdateData(BOOL bSaveAndValidate = TRUE)

参数:

        bSaveAndValidate指明数据传输方向,若为TRUE,控件-》变量;若为FALSE,变量-》控件。其默认值为TRUE。

返回值:

        数据更新操作是否成功,成功为TRUE,失败为FALSE。


0x01 为控件添加消息处理函数

1_右击控件,选择“Add Event Handler...”添加消息处理函数

2_在控件属性中点击“Control Events”按钮(闪电按钮)选择并添加消息。

3_直接双击控件

4_通过Class Wizard添加(此为VS2002至VS2008没有该种方法)


0x02 编辑TAB顺序

在主菜单中选择Format -> Tab Order或者 Ctrl + D使对话框上显示各个控件的TAB顺序数字,然后按开发者想排列的顺序依次点击控件即可。完成后,点击空白处或者按ESC保存修改。


0x03 对话框的分类

1_模态对话框

在一个多对话框的程序运行中,模态对话框弹出后,该程序的其他对话框不能被操作,只有当其退出后,其他的对话框才可以被操作。

ps:模态对话框弹出的原理

其涉及到CDialog类下的一个重要函数DoModal(),调用该函数,对话框就会弹出,其返回值为退出对话框所点的按钮ID。其原型如下:

virtual INT_PTR DoModal();

返回值说明: 其返回值类型为整型,指定了传递给CDialog类下的EndDialog函数【注:该函数用于关闭对话框】的nResult参数,若不能创建对话框,则返回-1,若出现其他的错误则返回IDABORT。


2_非模态对话框

该种对话框,并不影响用户对本程序的其他对话框的操作,一般来说,这种对话框用作显示提示信息。



0x04 属性页对话框

该种对话框用到以下两个类:

1_CPropertyPage类

其用以处理某单个属性页,故需要为每个属性页创建一个继承该类的子类。

\1构造函数<常用>

CPropertyPage()           | 无参数构造函数

CPropertyPage(UINT nIDTemplate,UINT nIDCaption = 0,DWORD dwSize = sizeof(PROPSHEETPAGE)) 

参数说明:

        nIDTemplate,属性页的对话框资源ID

        nIDCaption,属性页对话框选项卡的标题所用字符串资源的ID,需要注意的是若此值设为0,则选项卡标题就使用该属性页的对话框资源的标题。

CPropertyPage(LPCTSTR lpszTemplateName,UINT nIDCaption = 0,DWORD dwSize = sizeof(PROPSHEETPAGE))

参数说明:

       lpszTemplateName,属性页的对话框资源的名称字符串,不能为NULL

       nIDCaption,与上面一样。

\2CancleToClose函数

在模态属性页对话框的属性页进行了某不可恢复的操作后,使用CancelToClose函数,将“OK”按钮改为“Close”按钮,并禁用“Cancel”按钮

\3SetModified函数

可激活或禁用"Apply"按钮

\可重载的消息处理函数

 OnApply:处理属性页的"Apply"按钮被单击的消息

OnCa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值