通过一个简单的向导程序demo的设计,初步了解了MFC中一些基本对话框编程函数的编程以及一些基本控件的使用。
首先来了解一些重要的函数:
获取对话框上的项目指针:GetDlgItem(),注意此函数的返回值,一般都需要进行强制类型转换。
获取窗口信息:GetWindowText(),而与之对应的是更改窗口信息:SetWindowText()
直接取得对指定话框上项目的信息:GetDlgItemText() 想当于GetDlgItem()和GetWindowText()合用,当然,有SetDlgItemText() 相当于GetDlgItem()和SetItemText() 合用。
GetDlgItemInt(),SetDlgItemInt()等等,S/GetDlgItemInt()可以处理有符号的整数。
atoi() 转换一个类型到指定类型时,用 类型的第一个字母 to 指定类型的一个字母。
在DoExchange函数里,放置以DDX_为前缀的函数,来关联一个控件和变量,DDV_为前缀的函数,用来校验一个控件内容。
DDX_(对话框数据交换) DDV_(对话框数据校验)
注意,在用数据变量关联控件的方式时,千万注意要使用UpdateData()!
这里比较重要的一点是控件与一个变量的关联以及如何关联(这里有个经历,自定义的类型如果着下面的类型选项中如果没有,先选上能选择的,之后在代码中将选 择的变量类型更改过来,这样也能实现自定义类型变量与控件的关联,当然,此自定义类型是此控件类型的子类而已)!其中可以是control类型的,也可以 是value的。updateDate()函数函数缺省的参数(true),true表示从控件将数据关联到变量,false则是从变量的数据关联到控 件!
当关联一个control类型的控件时,可以用它的成员函数,来对控件进行操作,例如:CEDIT.GetWindowText();
SendMessage()的用法,比较好用,注意,发送消息,是控件向系统发送,直接发送给消息响应函数,详细响应函数执行完成后,直接返回,由系统处理!函数完整形式:
1 LRESULT SendMessage( UINT message, WPARAM wParam =0, LPARAM lParam =0 );
2
3 static LRESULT SendMessage( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
与之对应的PostMessage()函数,将消息放到消息队列中,当处理后,返回,遵循队列顺序。当我们需要处理我们自定义的一些消息时,可以使用此函数,一般自定义的消息需要大于WM_USER,可以使用WM_USER + NUM形式。
SendDlgItemMessage(),详细MSDN。
改变窗口的大小Wnd::SetWindowPos()对话框从父类继承来的函数。
消息:WM_INITDIALOG,在一个对话框和其上的控件建立完成之后,由对话框发送,当时,对话框还没显示。
判断一个矩形是否为空:分别为IsRectEmpty(),IsRectNull()两个函数。前者是判断矩形面积是否为空,后者是判断矩形的四个坐标值是否为0,并不关心是否能做为一个矩形。
在CPropertyPage中设置SetWizardButtons可更改显示属性(显示的button),如下
- PSWIZB_BACK Back button
- PSWIZB_NEXT Next button
- PSWIZB_FINISH Finish button
- PSWIZB_DISABLEDFINISH Disabled Finish button 为IDC_RADIO1关联成员变量,需要先设置Group属性才行
为CPropertyPage增加虚函数,OnWizardNext,如果用户点击下一步时,不想让他进入下一步,刚返回-1
从CPropertySheet派生的类,与CPropertyPage的实例之间的关系:
其中操作一些函数见CPorpertySheet中。此类创建显示操作类似于Dialog,使用DomoDal函数等,但是其是CWnd子类!
至于在程序中应用,就是一个api的应用,关键是查看MSDN,了解基本的控件属性,包含的函数方法,如radioButton(CButton子类),CListBox,CCombObox,checkBox,group的概念等。
实践过程中包含消息的处理以及理解虚函数!分清楚消息该由谁处理消息,处理什么消息,经验积累。重要的还有理解控件与变量关联!!!
有问题多记得阅读MSDN!!!
记录下自己的所学,虽然浅薄!!!如果我是一只蜗牛,那就只能慢慢向上爬!