MFC对话框、菜单栏、工具栏、控件的创建和基本使用


下面让我们通过一个实例
来了解MFC对话框的建立,菜单栏、工具栏、控件的一些基本使用

先简单看一下效果

在这里插入图片描述


系统环境

  • window10
  • Visual Studio 2017

项目的目录

在这里插入图片描述

一、对话框

首先需要知道的是

MFC中创建的对话框分为两种

  • 模态对话框
  • 非模态对话框

两者区别简单来说就是

模态对话框就像和你女朋友聊天,一旦你打开了她的对话框,除非你把她哄好打点好之后,你才能干其他的事情

非模态对话框就像是兄弟,简单的回个“打球不?”

他说“好”

然后你就可以去干其他的事情了此时的对话框可以关闭,也可以开启着


比较专业一点来说就是

模态对话框当其显示时,程序会暂停执行,直到关闭这个模态对话框后,才能继续执行程序中其他任务。

非模态对话框当其显示时,允许转而执行程序中其他任务,而不用关闭这个对话框。

再就是这两者的创建和关闭的情况有所区别了

见下图

在这里插入图片描述

以下我只演示关于模态对话框的操作

如果只对非模态对话框感兴趣的兄弟阔以走了

1、创建对话框资源

在这里插入图片描述

然后右键Dialog 选择插入Dialog

在这里插入图片描述

之后就会出现一个空白的对话框

我们可以通过工具箱来拖拽里面的控件

如果没有工具箱这个视图的童鞋,可以在菜单中的视图里找到

在这里插入图片描述

在对话框的属性里可以更改这个对话框的ID

在这里插入图片描述

当然懒得改的话,且只有一个对话框的话,也可以不改

之后咱通过拖拽控件形成一个界面

在这里插入图片描述

当然此时的界面也就是个界面而已,啥也没做

2、创建对应的对话框类、以及控件对应的变量

在这里插入图片描述

在创建好的对话框上右键,然后点击添加类

在这里插入图片描述

之后就能对这个对话框类进行,命名和设置基类了

添加好类之后

我们需要对控件添加相应的变量来传递相应的值

需要注意的是不同的控件需要传递不同的值

下面演示的我所用到的,

Edit Control

MFC ColorButton Control

Button

Static TextGroup Box就不说了,我只是改了一下他们的名称


Edit Control

在这里插入图片描述

选中控件后右键,选择添加变量

在这里插入图片描述

之后就可以对这些进行设置了

因为我这些控件是之前设置好的,所以是暗色的


MFC ColorButton Control

这个控件就比较特殊了

在选择属性的时候,我这里设置的是

  • 类别为控件

  • 变量类型设置为CMFCColorButton类型

如果你有特殊要求再自己设置

在这里插入图片描述


需要注意

此时的颜色设置框,其实是不可以使用的

我们需要再为这个控件设置一个行为

在这里插入图片描述

选中颜色选择框后,点击其属性中的控件行为

添加一个点击行为

之后就有系统自动生成的函数了

void CMyDialog::OnBnClickedMymfccolorbutton()
{
	// TODO: 在此添加控件通知处理程序代码

	//获取控件上选择的RGB
	 color = text_color.GetColor();
}

上面的color是我自己定义的

CMyDialog的对话框类中

COLORREF color; //我自己定义的
CMFCColorButton text_color; //刚刚设置变量的时候系统自动生成的

Button

在这里插入图片描述

按钮就比较方便了

在按钮上双击之后就可以转到他的点击函数中

代码如下

需要注意的是

UpdateData()函数的使用

UpdateData(1); 将控件的值赋值给成员变量

UpdateData(0); 将成员变量的值赋值给控件

// 使用该设置的按钮
void CMyDialog::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	// 将控件的值赋值给成员变量
	UpdateData(1);
    // 将成员变量的值赋值给控件
	UpdateData(0);
}

// 使用默认设置的按钮
void CMyDialog::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	text_str = "默认输出";
	text_x = 100;
	text_y = 100;
	color = RGB(255,0 , 0);
    // 设置控件上显示的颜色
	text_color.SetColor(color);
	// 将成员变量的值赋值给控件
	UpdateData(0);
}


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

二、菜单栏

1、创建对应的资源、ID

在MFC中已经有默认的菜单了,我们直接在上面进行修改

和上面创建对话框的资源类似

在这里插入图片描述

同时我们将其ID修改为ID_MODELDIALOG

在这里插入图片描述


2、为view视图类添加变量

变量的作用:与CMyDialog类进行信息的传递

在这里插入图片描述

3、为添加的菜单ID加对应的处理函数

之后我们在类视图中通过类向导为刚刚的ID添加对应的处理函数

在这里插入图片描述


在这里插入图片描述

函数内容如下

void Csecond2View::OnModeldialog()
{
	// TODO: 在此添加命令处理程序代码
	CMyDialog dlg;
    // 在模态对话框点击“确定”按钮后
	if (dlg.DoModal() == IDOK) {
        // 传值
		text_str = dlg.text_str;
		text_x = dlg.text_x;
		text_y = dlg.text_y;
		text_color = dlg.color;
        // 绘制字体
		CDC *pDC;
		pDC = GetDC();
		pDC->SetTextColor(text_color);
		pDC->TextOutW(text_x, text_y, text_str);
	}
}
第二次更新

注意在CMyDialog dlg;
之前要 #include "CMyDialog.h"

三、工具栏

1、创建ID

工具栏和菜单栏类似

不过需要自定图标

在这里插入图片描述

工具在菜单栏的图像里


接着我们再设置一下

ID:ID_BUTTON_MYDIALOG

同菜单栏类似

2、在类向导里为ID添加一个处理函数

函数内容如下

void Csecond2View::OnButtonMydialog()
{
	// TODO: 在此添加命令处理程序代码
	CMyDialog dlg;
    // 在模态对话框点击“确定”按钮后
	if (dlg.DoModal() == IDOK) {
		text_str = dlg.text_str;
		text_x = dlg.text_x;
		text_y = dlg.text_y;
		text_color = dlg.color;
        // 绘制字体
		CDC *pDC;
		pDC = GetDC();
		pDC->SetTextColor(text_color);
		pDC->TextOutW(text_x, text_y, text_str);
	}
}

四、总结

以上就是MFC中模态对话框的创建、控件、菜单、工具栏的基本使用了

如果觉得此文对你们有帮助的话请给个三连吧~~

谢谢老铁们~~~

  • 16
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VC MFC是指Visual C++的MFC(Microsoft Foundation Class)库,是一套用于Windows平台的C++应用程序开发框架。MFC控件MFC库提供的一系列可视化用户界面元素,用于构建Windows应用程序的用户界面。 MFC控件大全包括但不限于以下几种控件: 1. 对话框控件:用于显示应用程序的主窗口或对话框,包括按钮、文本框、列表框等; 2. 按钮控件:用于触发特定的操作或执行特定的功能; 3. 文本框控件:用于显示和编辑文本内容; 4. 列表框和组合框控件:用于显示列表或下拉选择框; 5. 菜单和工具栏控件:用于创建菜单和工具栏,以提供应用程序的功能和操作入口; 6. 树视图和列表视图控件:用于呈现树形结构或列表形式的数据; 7. 进度条和滑块控件:用于显示任务的进度或操作的状态; 8. 图像和动画控件:用于呈现图像或动画效果; 9. 复选框和单选框控件:用于选择或标记选项; 10. 状态栏和滚动条控件:用于显示应用程序状态或实现视图的滚动效果。 以上只是MFC控件中的一部分,开发者可以根据自己的需求选择合适的控件来构建用户界面。这些控件不仅提供了丰富的功能和交互性,还具有良好的可扩展性和灵活性,方便开发者进行界面设计和用户交互的实现。在VC MFC编程中,通过使用这些控件,开发者可以快速、高效地构建出符合用户期望的Windows应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joshua_yi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值