您的位置:首页 > 其它

MFC中对话框的操作

2013-07-21 18:54 218 查看
①在菜单栏上加一个按钮(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);



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

如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: