话说FPGA是一种多么奇妙的东西,它强大的逻辑性和并行性让我深深爱上了它,并一直以来都在学习并研究它的应用。但是,为了将FPGA的应用发挥到极致,我希望把它与计算机软件(即上位机)结合起来,于是学习一段时间的VC++。下面我将给出在学习中所做的笔记~~~
【1】对话框应用程序的创建
1、打开VC++6.0,接着在“File→New...”的Projects选项卡中新建工程,如图1.1所示。
图1.1
2、选择OK按钮,出现新建工程第一步,如图1.2所示。
图1.2
3、由于本次创建的是基于对话框的应用程序,后面的参数可以不用设置,故直接选择Finish按钮完成工程的建立,如图1.3所示。
图1.3
【2】创建并显示对话框
1、对话框显示方法主要有两种:模式对话框和非模式对话框。在模式对话框中,如果用户不关闭该对话框,将不能切换到程序的其他对话框中;而在非模式对话框中,用户可以随意的进行对话框的切换。
2、新建一个对话框类,如图2.1和2.2所示。
图2.1
图2.2
3、双击确定按钮并添加单击事件,如图2.3和图2.4所示。
图2.3
图2.4
4、我们的任务是将CStudent类中的对话框在本工程的主窗口的单击事件中显示出来。首先要在主窗口类的源文件中引用CStudent类中的头文件,如图2.5所示。
图2.5
5、创建和显示模式对话框。为单击事件添加代码,如图2.6所示。
图2.6
6、在创建模式对话框时,还可以采用在堆中的方式来为对话框分配空间及使用new运算符来构建对话框对象,使用delete来释放对话框对象。如图2.7所示。
图2.7
7、运行调试
8、创建和显示非模式对话框。在主对话框类的头文件中包含CStudent类的头文件并在主对话框类中定义一个非模态对话框类的成员,如图2.8所示。
图2.8
9、访问成员m_Student,调用create方法来创建对话框资源,如图2.9所示。
图2.9
10、运行便可实现非模式对话框,但第二次按确定按钮时会出现一个问题,如图2.10所示。
图2.10
11、出现图2.10问题的原因是对话框并未真正地被销毁,而是被隐藏了,如果再次创建对话框将出错。解决的方式为使用IsWindow函数来判断当前的对话框对象m_Student是否关联了一个对话框。如果没有关联,则调用Create方法来创建对话框;如果已经关联了,则不调用Create方法来创建对话框,而是直接调用ShowWindow方法来显示对话框。如图2.11所示。
图2.11
12、运行调试,此时没问题。
【3】添加对话框成员和成员函数
1、添加成员和成员函数主要有2种方式,第一种方式是手工添加,第二种方式是利用向导添加。
2、手工添加成员变量,如图3.1所示。
图3.1
3、手工添加成员函数,如图3.2所示。
图3.2
4、添加成员函数后还需要在对话框类的源文件中添加ShowDlg()的实现部分,如图3.3所示。
图3.3
5、利用向导添加成员变量,如图3.4和图3.5所示。
图3.4
图3.5
6、利用向导添加成员函数,如图3.6和图3.7所示。
图3.6
图3.7
7、添加消息处理函数,该消息处理函数不需要用户来调用,而是系统自动调用的。以按钮为例,在双击对话框中的按钮时,将会添加按钮的单击事件消息处理函数,此时系统在对话框的消息映射部分自动添加映射宏,如图3.8所示,因此将按钮的ID与消息处理函数进行了关联。
图3.8
8、手动添加命令消息处理函数。首先需要定义一个消息常量值,为了防止与系统消息值相同,可以以WM_USER消息值为基础递增。例如:#define POSCHANGE WM_USER+1。
9、然后向对话框中添加一个成员函数void OnPosChanged(),最后添加自定义消息CM_POSCHANGE的消息映射宏,将CM_POSCHANGE消息与OnPosChanged成员函数关联。
【4】使用类向导为空间关联成员变量
1、创建一个基于对话框的应用程序,并向对话框中添加对应的控件及ID,如图4.1和图4.2所示。
图4.1
图4.2
2、设置组合框的内容(其中换行需要按“CTRL+ENTER”组合键)及风格,如图4.3和图4.4所示。
图4.3
图4.4
3、为控件关联成员变量(以操作数1为例,其他类似),按“CTRL+W”组合键打开类向导,如图4.5、图4.6和图4.7所示。
图4.5
图4.6
图4.7
4、接下来为对话框添加程序,首先在对话框的头文件中添加类模板,如图4.8所示。
图4.8
5、添加计算按钮的单击事件,如图4.9所示。
图4.9
哈哈,今晚先介绍到这吧。未完待续~~~