• 辍笔MFC之基础运用(1)


          话说FPGA是一种多么奇妙的东西,它强大的逻辑性和并行性让我深深爱上了它,并一直以来都在学习并研究它的应用。但是,为了将FPGA的应用发挥到极致,我希望把它与计算机软件(即上位机)结合起来,于是学习一段时间的VC++。下面我将给出在学习中所做的笔记~~~

    【1】对话框应用程序的创建

    1、打开VC++6.0,接着在“File→New...”的Projects选项卡中新建工程,如图1.1所示。

    1.1

                                                           图1.1

    2、选择OK按钮,出现新建工程第一步,如图1.2所示。

    1.2

                                                图1.2

    3、由于本次创建的是基于对话框的应用程序,后面的参数可以不用设置,故直接选择Finish按钮完成工程的建立,如图1.3所示。

    1.3

                                                        图1.3

    【2】创建并显示对话框

    1、对话框显示方法主要有两种:模式对话框和非模式对话框。在模式对话框中,如果用户不关闭该对话框,将不能切换到程序的其他对话框中;而在非模式对话框中,用户可以随意的进行对话框的切换。

    2、新建一个对话框类,如图2.1和2.2所示。

    2.1

                          图2.1

    2.2

                          图2.2

    3、双击确定按钮并添加单击事件,如图2.3和图2.4所示。

    2.3

                                                 图2.3

    2.4

                                                图2.4

    4、我们的任务是将CStudent类中的对话框在本工程的主窗口的单击事件中显示出来。首先要在主窗口类的源文件中引用CStudent类中的头文件,如图2.5所示。

    2.5

                                                 图2.5

    5、创建和显示模式对话框。为单击事件添加代码,如图2.6所示。

    2.6

                                                 图2.6

    6、在创建模式对话框时,还可以采用在堆中的方式来为对话框分配空间及使用new运算符来构建对话框对象,使用delete来释放对话框对象。如图2.7所示。

    2.7

                                                图2.7

    7、运行调试

    8、创建和显示非模式对话框。在主对话框类的头文件中包含CStudent类的头文件并在主对话框类中定义一个非模态对话框类的成员,如图2.8所示。

    2.8

                                                图2.8

    9、访问成员m_Student,调用create方法来创建对话框资源,如图2.9所示。

    2.9

                                               图2.9

    10、运行便可实现非模式对话框,但第二次按确定按钮时会出现一个问题,如图2.10所示。

    2.10

                                              图2.10

    11、出现图2.10问题的原因是对话框并未真正地被销毁,而是被隐藏了,如果再次创建对话框将出错。解决的方式为使用IsWindow函数来判断当前的对话框对象m_Student是否关联了一个对话框。如果没有关联,则调用Create方法来创建对话框;如果已经关联了,则不调用Create方法来创建对话框,而是直接调用ShowWindow方法来显示对话框。如图2.11所示。

    2.11

                                             图2.11

    12、运行调试,此时没问题。

    【3】添加对话框成员和成员函数

    1、添加成员和成员函数主要有2种方式,第一种方式是手工添加,第二种方式是利用向导添加。

    2、手工添加成员变量,如图3.1所示。

    3.1

                                              图3.1

    3、手工添加成员函数,如图3.2所示。

    3.2

                                                图3.2

    4、添加成员函数后还需要在对话框类的源文件中添加ShowDlg()的实现部分,如图3.3所示。

    3.3

                                                图3.3

    5、利用向导添加成员变量,如图3.4和图3.5所示。

    3.4

                        图3.4

    3.5

                                              图3.5

    6、利用向导添加成员函数,如图3.6和图3.7所示。

    3.6

                       图3.6

    3.7

                                              图3.7

    7、添加消息处理函数,该消息处理函数不需要用户来调用,而是系统自动调用的。以按钮为例,在双击对话框中的按钮时,将会添加按钮的单击事件消息处理函数,此时系统在对话框的消息映射部分自动添加映射宏,如图3.8所示,因此将按钮的ID与消息处理函数进行了关联。

    3.8

                                              图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.1

    4.2

                                              图4.2

    2、设置组合框的内容(其中换行需要按“CTRL+ENTER”组合键)及风格,如图4.3和图4.4所示。

    4.3

                                              图4.3

    4.4

                                              图4.4

    3、为控件关联成员变量(以操作数1为例,其他类似),按“CTRL+W”组合键打开类向导,如图4.5、图4.6和图4.7所示。

    4.5

                                                图4.5

    4.6

                                               图4.6

    4.7

                                              图4.7

    4、接下来为对话框添加程序,首先在对话框的头文件中添加类模板,如图4.8所示。

    4.8

                                              图4.8

    5、添加计算按钮的单击事件,如图4.9所示。

    4.9

    4.10

                                            图4.9

    哈哈,今晚先介绍到这吧。未完待续~~~

  • 相关阅读:
    Confluence 6 尝试从 XML 备份中恢复时解决错误
    Confluence 6 XML 备份恢复失败的问题解决
    Confluence 6 找到在创建 XML 备份的时候出现的错误
    Confluence 6 XML 备份失败的问题解决
    c trans
    How To Use API Online?
    c string
    c function
    c array
    FileCopy
  • 原文地址:https://www.cnblogs.com/CrazyBirdLin/p/4314713.html
Copyright © 2020-2023  润新知