1.创建一个对话框基于程序创建过程:新建完成后,如下图2. 对话框应用框架介绍 1. 资源视图使用AppWizard创建基于对话框的应用程序框架(假设项目名为Dialog)后,项目工作区中将添加一个“资源视图”选项卡。或者,通过“视图”找到“资源视图”选项卡:在MFC中,与用户交互的对话框界面被认为是一种资源。 展开“Dialog”可以看到有一个ID为IDD_DIALOG_DIALOG的资源(中间部分(DIALOG)与工程名相同),对应中间的对话框设计界面。 每当双击对话框资源的ID时,中间就会显示对话框设计界面。2. 类视图在类视图中,可以看到生成了3个类:CAboutDlg、CDialogApp和CDialogDlg。3.设计界面和工具箱3年嵌入式物联网学习资源整理分享:C语言、Linux开发、数据结构; 软件开发、STM32单片机、ARM硬件开发、物联网通讯开发、综合项目开发教程资料; 笔试和面试问题。 点击下方插件即可免费获取↓↓↓1. 模态对话框1)当显示模态对话框时,程序将暂停执行,直到模态对话框关闭后才能执行程序中的其他任务。1、右键点击图片框中的Button,直接拖动到界面中。 Button1 按钮将添加到界面中。2、可以修改这个Button1按钮的属性,右键->属性。3. 修改标题以更改按钮的名称。4、双击该按钮,跳转到按钮处理函数:
void CMFC01Dlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码}
2)资源视图->对话框->右键->插入对话框:3)修改对话框ID:4)点击对话框模板->右键->添加类:5)类视图中多了一个自定义类:6) 按钮处理函数创建对话框并以模态方式运行。 1、首先在MFCXXDlg.cpp中添加刚才看到的对话框的头文件。2、在MFCXXDlg.cpp中的OnBnClickedButton1函数中编写相应的操作。 要创建模式对话框,需要调用CDialog类的成员函数==CDialog::DoModel==。 该函数的作用是创建并显示一个对话框://启动模拟对话框按钮void CMFC01Dlg::OnBnClickedButton1(){ // 需要包含头文件 #include "DlgExec.h" CDlgExec dlg; dlg.DoModal();}
然后重新生成解决方案并再次调试。 结果如下:2.非模式对话框当显示非模式对话框时,程序将继续执行程序中的其他任务,而无需关闭对话框。图形界面的操作过程与模式对话框相同。 然而,非模式对话框的实现方式不同。 它首先创建(CDialog::Create)一次,然后显示(CWnd::ShowWindow)。//启动非模拟对话框按钮void CMFC01Dlg::OnBnClickedButton2(){ //需要在MEC01Dlg.cpp开头包含头文件 #include "DlgShow.h" //弹出非模态对话框 CDlgShow dlg; //创建 dlg.Create(IDD_DIALOG_SHOW); //显示 dlg.ShowWindow(SW_SHOWNORMAL);}
注意:头文件必不可少然后重新生成解决方案并再次调试。 结果如下:3.静态文本框CStatic静态文本框是最简单的控件。 主要用于显示文本信息,不能接受用户输入。 一般来说,不需要连接变量或处理消息。静态文本框的重要属性是:接口功能CWnd::设置窗口文本设置控制内容CWnd::获取窗口文本获取控制内容CStatic::SetBitmap设置位图(后缀为bmp的图片)相关控制变量:由于XXX_STATIC静态ID不能与变量关联,所以需要修改ID,然后关联变量:例子:代码如下所示//点击按钮让哈哈变成呵呵void CMFC02Dlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 m_text.SetWindowTextW(TEXT("呵呵"));}//点击按钮获取文本中的内容 并且弹出void CMFC02Dlg::OnBnClickedButton2(){ // TODO: 在此添加控件通知处理程序代码 CString str; m_text.GetWindowTextW(str); MessageBox(str);}
您还可以将图片添加到对话框中在主对话框类OnInitDialog()中,完成相应的界面测试://设置静态控件窗口风格为位图居中显示m_pic.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE);//通过路径获取bitmap句柄#define HBMP(filepath,width,height) (HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,height,LR_LOADFROMFILE|LR_CREATEDIBSECTION)//宽高设置应该按照控件的大小设置CRect rect;m_pic.GetWindowRect(rect);//静态控件设置bitmapm_pic.SetBitmap(HBMP(TEXT("./ly.bmp"), rect.Width(),rect.Height()));
调试结果如下:4.普通按钮CButton按钮是最常见且使用最广泛的控件。 程序执行过程中,当点击某个按钮时,就会执行相应的消息处理函数。按钮的主要属性是Caption,它设置按钮上显示的文本。命令按钮处理的最常见消息是:BN_CLICKED。 双击按钮跳转到处理函数。 或者,通过按钮属性->控制事件->选择所需的事件添加处理函数:常用接口:接口功能CWnd::设置窗口文本设置控制内容CWnd::获取窗口文本获取控制内容CWnd::启用窗口设置控件是否变灰相关控制变量:在主对话框类OnInitDialog()中,完成相应的界面测试://获取按钮的内容 CString str; m_button.GetWindowText(str); MessageBox(str); //设置按钮内容 m_button.SetWindowText(TEXT("^_^")); //设置按钮状态为灰色 m_button.EnableWindow(FALSE); m_button.EnableWindow(TRUE);
实际效果如下:好吧,终于做了一个这样的应用小程序了。 看起来确实是一个入门级的小程序,我觉得还可以。 听一个女学生说,如果想用MFC写串口程序,需要下载MSComm控件。 这个东西还不能在我的电脑上运行。 算了,MFC可能都学会了这个,我就老老实实用我的QT吧,对毕业设计可能帮不了什么忙。(图片来源网络,侵删)
0 评论