【VS对话框制作】MFC用户交互界面设置——以选课系统为例

程序效果

【环境】编程语言C++,VS2019

【操作】点击显示按钮,右侧即可显示用户选择结果

整体架构流程

1.创建MFC项目

2.绘制对话框

视图→工具箱→依次添加各个小按钮,并排列整齐

  • 每个控件的ID都需要修改成自己可辨别的“名字”
  • 对话框的ID也可在在属性中修改

我的对话框ID:IDD_MFCTest_DIALOG

3.添加MFC类

【操作】右键对话框→添加类

  • 类名自定义
  • 注意对话框的ID是否对应

4.添加控制变量

【操作】右键每个控件→添加变量

【作用】为每个控件关联一个变量,作为“桥梁”传递用户选择的数据

Combo Box

【注意】只有Edit Control的控件类别为:值        变量类型:CString

                                     其他的类别均为:控件

5.控件初始化

Combo Box:

【注意】英文输入法、分号隔开,否则下拉框会出现在同一行

Edit Control:

CTestDlg::CTestDlg(CWnd* pParent /*=nullptr*/)
	: CDialog(IDD_MFCTest_DIALOG, pParent)
	, m_NAME(_T("请输入姓名"))
	, m_Result(_T("请点击显示按钮"))
{

}

在CTestDlg.cpp中找到关联对话框部分的代码

并在下方添加代码进行初始化,提示用户进行操作

 【效果】

技术名词解释

List control 和 Edit control有什么区别?

List control和Edit control是Windows编程中常用的两种控件

List controlEdit control
显示和编辑列表数据,可显示多行数据接收和显示单行文本输入
共同点:添加、删除、编辑

代码

CTestDlg.h

#pragma once


// CTestDlg 对话框

class CTestDlg : public CDialog
{
	DECLARE_DYNAMIC(CTestDlg)

public:
	CTestDlg(CWnd* pParent = nullptr);   // 标准构造函数
	virtual ~CTestDlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_MFCTest_DIALOG };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnEnChangeEditName();
	afx_msg void OnCbnSelchangeComboSchool();
	// 我的学校
	CComboBox m_SchoolCtrl;
	CString m_NAME;

	
	CButton m_SexMale;
	CButton m_SexFemale;
	CString m_Result;

	afx_msg void OnEnChangeEditShow();
	afx_msg void OnBnClickedButtonResult();
	afx_msg void OnBnClickedCheckZtll();

	CButton m_ZT;//中特
	CButton m_SZFX;//数值分析
	CButton m_YYTJ;//应用统计

	virtual BOOL OnInitDialog();
	afx_msg void OnBnClickedCheckSzfx();
	afx_msg void OnBnClickedCheckYytj();
	afx_msg void OnBnClickedRadioMale();
	afx_msg void OnBnClickedRadioFemale();
};

CTestDlg.cpp

void CTestDlg::OnBnClickedButtonResult()
{

	UpdateData(TRUE);
		CString School;
		CString Course;
		m_SchoolCtrl.GetLBText(m_SchoolCtrl.GetCurSel(), School);
		m_Result = School + "\r\n" + m_NAME;
		
		if (m_SexMale.GetCheck())
		m_Result += "\r\n男\r\n";
	
		if (m_SexFemale.GetCheck())
			m_Result += "\r\n女\r\n";

		if (m_YYTJ.GetCheck()==1)
		{
			m_YYTJ.GetWindowTextW(Course);
			m_Result =m_Result+  "您选择的课程是:" + "\r\n"+Course;
		}

		if (m_SZFX.GetCheck() == 1)
		{
			m_SZFX.GetWindowTextW(Course);
			m_Result = m_Result + "\n" + "您选择的课程是:" + Course;
		}

		if (m_ZT.GetCheck()==1)
		{
			m_ZT.GetWindowTextW(Course);
			m_Result += Course;
		}
		UpdateData(FALSE);
}

小结

关于UpdateData

UpdateData(TRUE):用于将用户输入的数据传入到程序中  (对应本例中:选择学校)

比如:计算前输入要计算的数据

UpdateData(FALSE):用于将程序中的数据显示出来(对应本例中:将所有选好的数据显示出来)

比如:计算后的结果显示

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值