最近用c#和c++ 分别弄了winform 和MFC的对话框 的程序,记录一下两种不同界面开发的大致框架,之前没怎么做过界面开发,因此这里记录的一些很初级的东西。
一、c#的winform
1.生成解决方案后,可以添加多个项目,每个项目就是一个程序集。这个概念可以引入到访问权限的知识。如果想访问另外一个项目的类,必须增加public 访问机制(类的访问修饰符只有两种:public、internal。如果class前面没有加任何修饰符的话,默认是internal。internal 内部的 类和类成员的修饰符 只能在同一程序集(Assembly)中访问)
2.一个项目自动生成了Program.cs,这是程序的入口;每个窗口都是一个类文件(cs文件),一般有一个主窗口,就是再Program.cs里面启动生成新实例的窗体类,在多线程里面即UI主线程。
主窗体类,在构造函数里用InitializeComponent()进行控件的初始化,以及事件的关联,然后再定义一些方法开始运行,其他类文件就在运行过程中不断调用进去,实现各种功能。
3.如果要实时动态的更新界面,可以用多线程去进行数据处理,UI主线程调用界面显示更新;也可以用一个定时器调定时用方法跟新数据,
这里要注意在定时器控件哪里关联这个定时器触发事件。
4.在一些控件比较多的界面中,也可多分几块类文件,分别对一组控件进行数据处理,就是在这些类文件里面把主窗体类作为一个成员,并在构造函数里面把生成的窗体实例初始化,这样就可以在这些类里面修改控件的值了。
5.控件的属性里面设置了name,就用这个name在程序中使用,这与MFC不一样,MFC需要给控件生成一个变量。
二、c++ MFC
这里时对话框类型。
1.生成项目后,界面文件时.rc文件,主体程序时带Dlg的文件,更改界面的控件,Dlg会自动更新。MFC每一个控件需要生成一个对应的变量。
2.有几个关键的主窗体类方法:
DoDataExchange(pDX)、BEGIN_MESSAGE_MAP(CTestHSAPIDlg, CDialogEx)是在定义了控件变量和增加了事件后自动加进去的,就是让控件和变量关联,事件与动作关联; OnInitDialog()方法里面可以把自己写的方法放进去,即进行初始化,这个就是把其他类的方法加入主界面程序的地方。
弄这种界面程序,主要还是要了解程序的运行逻辑,关键的还是各种各样的类和方法,怎么在正确的逻辑下走进主程序或主线程。