MFC中对话框的操作
①在菜单栏上加一个按钮(Dialog),点击弹出对话框。
1.新建一个MFC项目,这里命名为sr,首先创建一个新的对话框,在资源视图里找到Dialog右键,Insert Dialog.出现新的对话框编辑界面。可以看到有两个按钮,OK和Cancel,自带,前者的ID 为 IDOK(后面要用到),后者的ID为IDCANCEL,查看ID的方法,在按钮上鼠标右键,选择Properties, 我们可以对对话框进行编辑,移动按钮的位置,或添加元件,如图:
2.双击对话框的空白处,为它添加类,选择Create a new class, Name这里写为 dialog(随便起), OK,OK.
3.创建菜单按钮。找到资源视图中的Menu,双击IDR_MAINFRAME,在帮助的后边空白处双击,出现对话框,Caption: 填写Dialog(名字),下面的Pop_up前面的对号取消选择(没有下级菜单)。
4.在创建的按钮Dialog右键,ClassWizard,为它添加消息。
先点击add function后点击edit code。
5. 在void CSrView::OnMenuitem32771() 函数中写代码:
dialog my;//创建对象
my.DoModal();//弹出对话框、
编译运行,有错,dialog不认识,在 View类中加入头文件. #include “dialog.h”,编译运行,点击菜单上的Dialog按钮,弹出刚才新建的对话框。
如果想当用户点击点击按钮OK后,弹出提示框。
可以把刚才的代码改成下面:
dialog my;
if(my.DoModal()==IDOK)
{
MessageBox("hello");
}
②在对话框中添加学生姓名信息,用户输入,点击OK后,学生姓名在窗口面板上显示。
1. 回到资源视图,找到刚才建立的对话框编辑页面,画出如下效果:
元件的位置随便改,按键盘上的上下左右也可以移动。
2.为编辑框Edit添加成员变量,右键,CLASSWIZARD,选择Member Variables,双击IDC_EDIT1(这是刚才编辑框的ID),Member variable name m_strName Category: Value Variable type OK. OK
3.在文件视图中找到 srView.h protected里面加入变量 CString strName;在CSrView构造函数中对它初始化。
4.在void CSrView::OnMenuitem32771()函数中加入下面代码:
strName=my.m_strName;
Invalidate();
5,接下来让它显示。找到OnDraw函数,加入代码: pDC->TextOut(20,20,strName);
6.编译运行,输入姓名,点击OK,屏幕上显示输入的姓名。
③上面用的是直接传值,Edit编辑框的成员变量属性为 value ,下面用另一种方法(控件类型)增加一个编辑框,输入学号,并在屏幕上显示。
1. 在原来的对话框编辑界面,画出如下:
2.第二个编辑框右键,class wizard, Member Variables ,双击IDC_EDIT2,name: m_EditID, Category: 选择Control(控件类型),OK。OK。
1. 在dialog.h里面,定义变量,public: CString strID;
3.对OK按钮添加消息,双击对话框编辑界面的OK按钮,进入到void dialog::OnOK();
写下面代码: m_EditID.GetWindowText(strID);
在void CSrView::OnMenuitem32771()里面strName=my.m_strName;该条代码改为:
strName=my.m_strName+" "+my.strID;
4. 编译,运行,点击菜单按钮Dialog输入姓名和学号,点击OK,信息在屏幕上显示。
5. 还有两种方法,重点改on oK函数里面的代码:
如下:
为了方便,通常用第三种方法,其中 IDC_EDIT2是第二个编辑框的ID。
④编辑框内容的初始化
1.对类dialog添加消息句柄VM_INITDIALOG,进入函数BOOL CAboutDlg::OnInitDialog()中。
2. 在函数中添加下面代码:
CWnd *pw=GetDlgItem(IDC_EDIT2);
pw->SetWindowText("201258503201");
m_strName="sun";
this->UpdateData(false);
编译,运行,发现对话框中有数据了。
如下: