MFC可视化窗口制作计算器详细步骤VC6.0

2022-10-06 09:59:54

鉴于最近作业经常用到可视化窗口,我用的C++比较多,所以这里希望简单的介绍下利用VC6.0实现一个简单的MFC可视化窗口程序,其实VS2017的MFC编程和VC6.0基本一样,函数和代码框架都基本一致,所以这篇文章也希望对使用VS2017的编程者有所帮助。

先贴一下代码吧,整个完整工程代码
calculate完整工程

打开VC6.0主界,点击左上角File,点击New新建,选择如下Project工程,点击MFC AppWizard(exe),然后右边Project name随便取个名字,这里我取名字为:calculate。然后工程目录Location自己随便定。然后点击右下角ok生成工程。

在这里插入图片描述

出现如下界面,一开始系统默认Multiple documents,不要选择这个。选择Dialog based。这样方便直接对可视化窗口进行操作,然后点击下面的Finish。会跳出一个提醒窗口,不用管,直接点击ok,然后到了我们开始操作的界面。
在这里插入图片描述
上面的操作结束后来到我们的直接对窗口操作的界面,如下是系统初始化给的窗口,先点击运行看看效果。右上角红色感叹号或者左上角build点击运行。
在这里插入图片描述
运行得到如下效果
在这里插入图片描述这就是最初始的运行出来的界面效果,现在我们开始来操作。

先在界面窗口直接删除“确定“按钮和“取消”按钮,选中按钮,直接点击delete就可删除
在这里插入图片描述

添加我们需要的控制部件,很多人打开的时候会看到这么一个东西
在这里插入图片描述
这个东西是一直出现在我们的操作界面的,我运行的时候出现在我的电脑界面的最右端,所以上述截屏没注意截到,这里额外说一下,这个东西是调用所有控件的窗口,我们一般制作可视化窗口,需要如下3样东西:
1.标签:用来在窗口说明其他控件功能
2.文本框:输入或者显示(输出)我们的数据
3.按钮:用来执行我们期望的功能

基本由这3个控件就行了,其他控件都很少用,然后这3个控件怎么得到呢?
在这里插入图片描述
我们在界面添加按钮,只需要鼠标点击对应的控件,拖到我们的窗口上即可,比如添加3个输入框作为两个数字的输入和数字运算的结果
在这里插入图片描述
但是对于其他人,他们不知道哪个输入框分别用来干嘛的,所以我们添加标签说明
在这里插入图片描述
怎么修改标签Static的内容呢?,选中某个标签,然后点击鼠标右键,得到如下结果
在这里插入图片描述然后点击最下面的Properties,得到如下结果
在这里插入图片描述
这里就是控件的属性页面了,直接在General下的Caption中修改名字即可,如
在这里插入图片描述
当修改为“输入数字”时,我们可以看到,窗口上对应的标签内容也改成了“输入数字”,依次操作,得到如下
在这里插入图片描述
现在我们再对输入框进行修改,前面两个是进行输入数字,最后是显示运算结果,那么最后一个原则上是不能输入数字的,所以我们修改属性,让最后一个文本框只能显示不能输入,同样和修改标签一样,打开属性界面
在这里插入图片描述这里需要点击Styles,得到如下
在这里插入图片描述
简单说说Styles下的每个选项的意思,选择Password相当于你在输入密码,你输入内容,会显示****这样的,Multiline中文意思是多行,选中这个你显示的内容超过了文本框宽度会自动换行,不然只会显示一行,Vertical scroll是竖直方向上,只有选中了Multiline才能选择Vertical scroll,那么我们只要求文本框显示内容不能输入内容,需要选中Read-only。因为我们只输出一个数字,所以其他选项不用管了。
在这里插入图片描述
完成后运行
在这里插入图片描述你们会发现,上面两个输入数字的文本框,颜色比较明亮,下面的运算结果显示的文本框,颜色比较暗淡,这样的情况下,运算结果的文本框是无法从外界输入数据的,只能显示数据。

然后添加按钮如下
在这里插入图片描述
同样修改按钮名字,方法同修改标签名字一样
在这里插入图片描述
好的,我们的计算器界面简单布置完成了,但现在只是一个空壳,怎么按按钮就能进行我希望的操作呢?先不着急,我们需要先给每个控件定义指针。
来到文件操作界面
在这里插入图片描述我们当前是在Resource界面,现在点击FileView,如下
在这里插入图片描述
Souce Files是源文件CPP的集合,Header Files是头文件.h的集合,其他的不用管,我们修改源文件和头文件就行,我们需要定义全局的对按钮控制的指针变量,这样方便我们对控件的操作,于是先来到头文件区
在这里插入图片描述
我们只需要对calculateDlg.h进行修改即可,其他的文件都是初始化的,怎么理解呢?我们直接在界面添加控件,摆放位置,运行的时候系统会自动识别界面上控件的数据(比如什么类型控件,位置多少)然后生成相应代码放到其他几个文件中,也包括在calculateDlg.h中,但是我们所能修改的就calculateDlg.h头文件,打开如下
在这里插入图片描述红线部分注意上面有个public,公众的意思,学过C++的知道这是公用变量,于是我们在这里定义指针,这样就可以全局使用。我们有3个文本框,4个按钮,于是我们根据控件的类型定义控件指针,取名字如下
在这里插入图片描述然后我们的头文件中的声明就完成了,现在需要和我们窗口上对应的控件联系起来,来到源文件区域,同样我们只需要对calculateDlg.cpp进行修改即可,我们要对控件指针赋值,也就是指针初始化操作,如果我们写一般的C++代码,里面有个main函数,然后在里面进行操作,同样的MFC框架中也有类似于main的函数存在,叫做OnInitDialog(),我们任何数据在这里进行初始化,然后其他的控件比如按钮都可以看作是另外的定义的函数,然后这个为主函数,这样一来和C++代码结构联系起来就很容易理解了,找到OnInitDialog()函数
在这里插入图片描述把我们的指针进行赋值,如下,每个指针一定要对应按钮的属性名字
在这里插入图片描述注意是属性名,不是我们后来修改的显示的外部名字,属性名在哪儿,回到我们的窗口操作界面,打开比如第一个文本框属性页面,如下
在这里插入图片描述
ID就是属性名,为IDC_EDIT1,所以我在赋值的时候写成
input_a = (CEdit *)GetDlgItem(IDC_EDIT1);
一定要注意对应起来,当然我也可以修改属性名,把IDC_EDIT1写成其他名字,比如改成xxx,那么初始化函数那里就写成
input_a = (CEdit *)GetDlgItem(xxx);
注意在初始化函数那里对应好就行了。

然后我们的指针和对应的控件也联系起来了,现在开始修改我们的按钮函数,因为我们启动按钮,才能进行操作,启动按钮函数如下,我们继续在窗口操作界面不动,我们点击某个按钮比如加按钮,双击它,得到
在这里插入图片描述
会跳出一个提醒窗口,英文名:Add Member Function,中文意思为添加成员函数,也就是给这个按钮添加函数,那么我们点击这个按钮的时候,就会触发这个函数,于是我们在这个函数里面写好我们需要的操作,就可以实现我们希望的功能了

直接点击OK得到如下
在这里插入图片描述系统已经自动生成好这个函数框架了,然后我们在函数里面添加我们希望的操作就行,注意!这部分是在calculateDlg.cpp文件里。

按钮1是加操作,于是我们对接收到的两个数字相加,把加的结果送到显示的文本框就可以了,这里我直接在代码里注释,请看代码,另外补充一下,可能到这儿了,有些之前用过MFC的人可能会问,为啥不用Viewz中的ClassWizard模块对按钮进行改变,补充一下,这个功能操作方便,不需要我们去定义指针,我们利用这个模块对每个控件修改好属性好,系统会根据属性自动生成代码,非常方便,但是!这个仅仅是生成很方便,如果我们要进行一些很麻烦的修改,我们需要修改控件的功能代码,这种情况下控件的代码是系统自动生成的,生成在哪些地方,关系是怎么定义的,我们在查找修改的时候会非常麻烦,而采用在头文件定义控件指针的好处就是我们自己声明变量,自己控制控件,修改的时候就对我们定义的变量函数进行修改就可以了,就非常方便,所以这里我们用的定义控件指针的方法进行操作,但是也有问题,这样的操作,系统都是默认了输入的数据为字符串,而我们输入的是数字,所以需要把字符串转换成数字:
代码如下:
MFC中字符串不是string,是CString,两者操作大同小异

//字符串转数字intCString_to_number(CString number){//判断是否负数bool flag=false;if(number[0]=='-')
		flag=true;int ans=0;int i;for(i=0;i<number.GetLength();i++){if(number[i]=='-')continue;
		ans*=10;
		ans+=(number[i]-'0');}//为负数if(flag)
		ans*=-1;return ans;}

同样显示的时候需要数字转字符串

//数字转字符串
CStringnumber_to_CString(int number){if(number==0)return"0";bool flag=false;if(number<0){//负数转正数方便运算
		number*=-1;
		flag=true;}
	CString s1,s2;while(number>0){
		s1+=(number%10+'0');
		number/=10;}//s1是number的翻转的数字,需要再次翻转int i;//如果为负数if(flag)
		s2="-";//翻转for(i=s1.GetLength()-1;i>=0;i--){
		s2+=s1[i];}return s2;}

然后来写按钮中的函数

//加按钮void CCalculateDlg::OnButton1(){// TODO: Add your control notification handler code here
	CString a,b;//获取文本框输入的内容
	input_a->GetWindowText(a);
	input_b->GetWindowText(b);//字符串转数字int a1=CString_to_number(a);int b1=CString_to_number(b);int c1=a1+b1;//数字转字符串
	CString c=number_to_CString(c1);//设置文本框的内容为c,实现输出
	output->SetWindowText(c);}

然后运行看看加按钮是否成功
在这里插入图片描述

测试成功,这里多输入几组数据看看就行,然后利用同样的方法给另外3种运算按钮进行修改。

然后整个项目就完成了,顺便说一下工程怎么打开,我们退出工程后,直接打开VC6.0,此时是空白的,点击下面这个图标,意思为打开文件
在这里插入图片描述点击后,找到我们的文件位置,如下
在这里插入图片描述这里把文件类型改成“所有文件”,如下
在这里插入图片描述
看上图,找到一个后缀为dsp的文件,点击打开它,就是打开了整个工程。

希望我的学习记录对你有所帮助,如果有问题也请及时指出,谢谢~

  • 作者:Guapifang
  • 原文链接:https://blog.csdn.net/weixin_43918046/article/details/106259107
    更新时间:2022-10-06 09:59:54