对话框用户界面程序的编写,如何向对话框控件联接数据成员及其实现机理,如何向对话框控关联控件类,如何利用对话框类的成员函数向控件发送消息和获取对话框控件的类指针,如何直接利用对话框控件类操纵对话框控件(发送消息和直接调用成员函数)。如何在程序运行时产生和销毁控件。对话框控件的几种操作方式的优劣比较分析。如何实现对话框的部分收缩和展开。如何让对话框上的文本框在程序启动后立即获得焦点,如何利用SetWindowLong改变窗口的回调函数,通过改变文本框的默认回车处理方式进行演示。实现多个输入文本框间通过回车逐一向下传递焦点的另一种巧妙方法(用缺省按钮来处理)
创建对话框增加响应函数
在资源中添加对话框,将Popup属性改成False,然后点击对话框添加事件处理函数
模态对话框创建
void CMyboleView::OnDialog() { // TODO: 在此添加命令处理程序代码 CTestDig dlg;//定义dlg对象 dlg.DoModal();//利用dlg调用DoModal }
前提是别忘引用头文件 #include "TestDig.h"
非模态对话框的创建
添加按钮,绑定单击事件
void CTestDig::OnClickedBtnAdd() { // TODO: 在此添加控件通知处理程序代码 //定义 int num1,num2,num3; char ch1[10],ch2[10],ch3[10]; //获取 GetDlgItem(IDC_EDIT1)->GetWindowTextA(ch1,10); GetDlgItem(IDC_EDIT1)->GetWindowTextA(ch2,10); //atoi 字符串到数字 num1=atoi(ch1); num2=atoi(ch2); num3=num1+num2; itoa(num3,ch3,10); //将值放到第三个编辑框中 GetDlgItem(IDC_EDIT3)->SetWindowTextA(ch3);
运行结果:
对话框控件访问七种方式
1. GetDlgItem()->Get(Set)WindowText()
2. GetDlgItemText()/SetDlgItemText()
3. GetDlgItemInt()/SetDlgItemInt()
4. 将控件和整型变量相关联
5. 将控件和控件变量相关联
6. SendMessage()
7. SendDlgItemMessage()
Z-order
窗口的Z次序表明了重叠窗口堆中窗口的位置,这个窗口堆是按一个假想的轴定位的,这个轴就是从屏幕向外伸展的Z轴。Z次序最上面的窗口覆盖所有其它的窗口,Z次序最底层的窗口被所有其它的窗口覆盖。
应用程序设置窗口在Z次序中的位置是通过把它放在一个给定窗口的后面,或是放在窗口堆的顶部或底部。
Windows系统管理三个独立的Z次序——一个用于顶层窗口、一个用于兄弟窗口,还有一个是用于最顶层窗口。
最顶层窗口覆盖所有其它非最顶层窗口,而不管它是不是活动窗口或是前台窗口。应用程序通过设置WS_EX_TOPMOST风格创建最顶层窗口。 一般情况下,Windows系统把刚刚创建的窗口放在Z次序的顶部,用户可通过激活另外一个窗口来改变Z次序;Windows系统总是把活动的窗口放在Z次序的顶部,应用程序可用函数BringWindowToTop把一个窗口放置到Z次序的顶部。函数SetWindowPos和DeferWindowPos用来重排Z次序。