MFC中对话框的操作

①在菜单栏上加一个按钮(Dialog),点击弹出对话框。

1.新建一个MFC项目,这里命名为sr,首先创建一个新的对话框,在资源视图里找到Dialog右键,Insert Dialog.出现新的对话框编辑界面。可以看到有两个按钮,OKCancel,自带,前者的ID IDOK(后面要用到),后者的IDIDCANCEL,查看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_EDIT2name: m_EditID,  Category:  选择Control(控件类型),OKOK

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);

 

编译,运行,发现对话框中有数据了。

如下:

 

posted @ 2013-07-21 18:54  同学少年  阅读(593)  评论(0编辑  收藏  举报