MFC创建自定义窗体

对于GUI编程来说,创建子窗体自然是很必要的一件事情,C++与C#相比,创建子窗体要麻烦一下,但是它们创建子窗体的流程是基本相同的。本文主要浅谈创建子窗体,并获取子窗体输入的数据的方法与步骤。实例所使用的IDE为VS2012。

步骤

Step 1: 创建MFC工程。
Step 2 : 添加窗体。打开资源视图,右键Dialog选项卡,添加资源,弹出对话框,如图所示。新建Dialog。(Step 2-4同样可以通过类向导,添加MFC类来进行,添加类后会自动生成对应的Dialog)
 图1
Step 3: 新建窗体后的界面和C#的界面类似,同样可以在属性栏里面修改窗体的相关属性和从工具栏添加控件。
在这里插入图片描述

Step 4:生成窗体类。简单一些的方法可以直接双击确定按钮,就可以自动弹出类向导。添加类名,和修改基类即可,本文以基类CDialog为例。类名XYDialog。
在这里插入图片描述

Step 5:为窗体添加控件。拖入窗体两个Static Text控件,并修改Caption为X坐标,Y坐标,然后拖入两个Edit Control。(控件的ID可以自行修改)
在这里插入图片描述

Step 6:为Edit Control控件添加相关变量。右键左侧Edit Control,在选项卡中选择添加变量,修改添加变量的类型。记得要先吧类别改为Value,Control为控制变量。我们这里只需要值变量。这样,窗体的值就与变量绑定在了一起,若修改Edit Control里面的值,变量X1的值也会随着改变(注意变量类型)。
在这里插入图片描述

Step 7:添加事件。双击确定按钮,这次不再弹出类向导(因为已经生成类了),界面跳转到代码页,在这里就可以添加相关的处理事件的代码,本例中并不需要,就不添加了。

void CXYDialog::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	CDialog::OnOK();
}

Step 8:添加Get方法。添加Get方法便于父窗体获得该子窗体相关的变量的值,并保证子窗体类的封装,函数定义代码如下,

int CXYDialog::GetX1(void)
{
	return this->X1;
}
int CXYDialog::GetY1(void)
{
	return this->Y1;
}

Step 9:在父窗体添加弹出自定义窗体的代码。在MainFrame的Menu中添加相应的选项卡。并在View类中添加相应的命令。
在这里插入图片描述
在这里插入图片描述

Step 10:在View类的.h文件中添加引用,并书写OnNewdialog ()的相关代码,代码如下。

void CGUI_ExampleView::OnNewdialog()
{
	// TODO: 在此添加命令处理程序代码
	CXYDialog xyDialog(this);
	if( xyDialog.DoModal() != IDOK)
	{
		AfxMessageBox(_T("请输入坐标!"));
		return;
 	}
	int x1 = xyDialog.GetX1();
	int y1 = xyDialog.GetY1();	
	CString str;
	str.Format(_T("%d,%d"),x1,y1);
	AfxMessageBox(str);
}

自此我们的项目算是已经写完了,最后测试一下。
在这里插入图片描述
输入10,10后,单击确定,弹出AfxMessageBox。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37844142/article/details/83544324