MFC设计笔记
MFC界面教程
*前言*
本教程分为四部分:
创建工程
初步设计界面
编写控制代码(使用dll动态链接库)
美化界面
每个部分都有详细的步骤(第一步、第二步、第三步…..),在每部分的结尾都有一些可能会遇到的问题的*解决办法,可供参考。*
本次使用的软件为Visual Studio 2019(以下简称vs)。
-——————————————————————————————————————————–
*创建工程 *
第一步:打开已经安装好的vs,点击创建新项目,如图1所示。
图1
第二步:如图2所示,点击搜索框,输入MFC,然后回车,选择MFC应用后,点击下一步。
图2
第三步:如果上一步没问题的话我们这时会看到配置新项目的窗口,这里我们把项目名称改成自己想要的名字,保存的位置可自己选择,设置好后点击创建。这里项目名称设置为MFC_APP,如图3所示。
图3
第四步:要是第三步没问题的话我们会看到MFC应用程序类型选项。应用程序类型选择基于对话框。如图4.1所示。
图4.1
在用户界面功能中可根据需要添加主框架样式。这里添加最大化框和最小化框,如图4.2所示。
图4.2
点击生成的类,把生成的类改成Dlg后,点击完成,即可创建一个新的MFC工程,如图4.3所示。
图4.3
生成好的界面如图4.4所示。
图4.4
第五步:如图4.5所示,把x86改成x64后,点击调试—>开始调试,测试一下是否有问题。
图4.5
第六步:点击资源视图—>xxx.re—->Dialog—->双击IDO_xxx_DIALOG(xxx是你的工程文件名),即可得到图4.6所示界面
图4.6
<1>如果无法建立工程文件,请检查是否安装了对应的组件,如图5所示。
图5
已经安装好vs后,修改组件的方法参考以下链接: VS已安装组件怎么更改? visual studio更改程序组件的技巧_编程开发_软件教程_脚本之家 (jb51.net)
<2>如果创建文件后没有跳转到图4.4所示界面,可手动打开创建的工程文件,点击调试—>开始调试,测试一下工程文件是否正常。若正常则可继续操作。若不正常请百度解决。
*初步设计界面*
第一步:按照图6所示,鼠标左击TODO,然后按下键盘上的删除按键(Del)。
图6
第二步:点击工具箱,添加你想要的控件,这里我们添加Button、Check Box、Edit Control、Static Text。可以左击已经添加的控件,修改其名字。左击控件,在右下角的属性栏中的杂项可以修改其ID,如图7.1所示。
图7.1
点击添加的Edit Control控件(作为显示窗口的那个),修改其属性,把其ID设置为IDC_EtStatuShow如图7.2所示。
图7.2
设计好的界面如图7.3所示(界面不唯一,可根据实际需要进行修改)
图7.3
点击脉宽设置旁的Edit Control控件(如图所示),修改其ID为IDC_PulseSet(修改方法如图7.1所示)。修改完成后再次左击该控件,在该控件上右击,点击添加变量,将类别改为值,名称改为如图7.4所示,变量类型改为int。
图7.4
同理,将剩余的Edit Control控件都按照图7.5的方法修改,把名称、变量类型分别改为:int m_FreqSet;(帧频设置)int m_MenMag;(灰度等级)int m_FrameSet;(帧数设置)float m_ShowTime;(积分时间)int m_MemWrAdr;(写地址设置)int m_MenRdAdr;(读地址设置)
其中,作为显示窗口的控件的修改如图7.5所示。
图7.5
完成以上操作后,点击运行,检验是否有问题。若无问题进行下一步,如有问题请仔细阅读以上操作方法,还是无法解决请百度哈。
*****编写控制代码*
第一步:双击需要添加控制代码的控件(这里点击USB初始化),即可自动打开.cpp文件。这里是编写控制MFC功能代码的地方。
第二步:把我们事先生成的dll文件拷贝到工程文件中,若找不到工程文件在哪,可以如图8所示操作。
图8
第三步:在第一步打开的.cpp中编写代码:
HINSTANCE m_hDll = LoadLibrary(L"xxx.dll");
其中,xxx是需要修改的。修改成你的dll文件名。点击运行,看是否出错。若出错,请确认生成的dll文件是否是64位的,此工程的Debug是否修改成X64。若有其他问题请百度。
第四步:引用dll里函数的方法:
语句1:
typedef char* (*AddFun)(int a, int b);//(int a, int b)根据引入函数所需要的参数修改
语句2:
AddFun xxx = (AddFun)GetProcAddress(m_hDll, "xxx");//xxx为要引入的函数
Notes:
语句1中的定义(int a, int b)需要根据dll库中的函数形式进行修改,否则会出错。
语句2中要引入的函数为dll文件库中的函数名,”xxx”里不能有空格存在,否则会找不到需要调用的函数。
图9.1是实现usb初始化函数的写法,可参考。
图9.1
其中str、str1都是CString类型的变量,flag1是int类型的变量。写好后点击运行,要是前面都没问题,运行后点击USB初始化按钮会得到图9.2所示结果。
图9.2
同理,可对其余控件进行相应的代码编写。
4、*如何美化界面?*
该链接中的教程十分详细,这里仅对该链接中的教程进行补充说明,建议先看完以下的补充说明后再去看参考博客。
MFC中添加函数的方法一:如图10.1所示,鼠标放在设计的MFC应用界面上任意位置,右击,点开类向导。
图10.1
打开类向导后点击消息,找到消息里你想要找的名字(这里以WM_CTLCOLOR为例),然后双击,你会发现在现有的处理程序中出现了一个新的函数名,如图10.2所示。
图10.2
点击图10.2中新出现的函数名后,点击编辑代码,即可对其进行代码编写。
MFC中添加函数的方法二:首先,如图10.3所示,找到类视图总的类。
图10.3
找到你所要添加函数的类后,鼠标右键点击该类,会有一个添加—>添加函数的选项。如图10.4所示。
图10.4
打开添加函数后,即可添加函数名(函数的名字要包含定义的变量类型,例如SetImagePath(CString strImgPath, CString strParentImgPath))。反回类型如果没有找到你想要的,可以先不管,创建好后在.cpp中和.h中手动修改即可。
创建类的方法:在设计的MFC界面上任意位置右击–>添加类即可。注意添加类的开头缩写字母一定要比xxxDlg.cpp的排列顺序后(例如TEXT_Dlg.cpp,如果要添加类的话,类的名字的开头字母只能从U到Z中取),否则发送工程给其他人时会出错。