zoukankan      html  css  js  c++  java
  • VS2010应用程序工程总文件的组成

    应用程序头文件和源文件

    应用程序向导会根据应用程序的类型(单文档、多文档或基于对话框的程序)自动生成一些头文件和源文件,这些文件是工程的主体部分,用于实现主框架、文档、视图等。

    下面分别简单介绍下各个文件:

           HelloWorld.h:

                                 应用程序的主头文件。主要包含由CWinAppEx类派生的CHelloWorldApp类的声明,以及CHelloWorldApp类的全局对象theApp的声明。

           HelloWorld.cpp:

                                 应用程序的主源文件。主要包含CHelloWorldApp类的实现,CHelloWorldApp类的全局对象theApp的定义等。

           MainFrm.h和MainFrm.cpp:

                                 通过这两个文件从CFrameWndEx类派生出CMainFrame类,用于创建主框架、菜单栏、工具栏和状态栏等。

           HelloWorldDoc.h和HelloWorldDoc.cpp:

                                 这两个文件从CDocument类派生出文档类CHelloWorldDoc,包含一些用来初始化文档、串行化(保存和装入)文档和调试的成员函数。

           HelloWorldView.h和HelloWorldView.cpp:

                                 它们从CView类派生出名为CHelloWorldView的视图类,用来显示和打印文档数据,包含了一些绘图和用于调试的成员函数。

           ClassView.h和ClassView.cpp

                                 由CDockablePane类派生出CClassView类,用于实现应用程序界面左侧面板上的Class View。

           FileView.h和FileView.cpp:

                                 由CDockablePane类派生出CFileView类,用于实现应用程序界面左侧面板上的File View。

           OutputWnd.h和OutputWnd.cpp:

                                 由CDockablePane类派生出COutputWnd类,用于实现应用程序界面下侧面板Output。

           PropertiesWnd.h和PropertiesWnd.cpp:

                                 由CDockablePane类派生出CPropertiesWnd类,用于实现应用程序界面右侧面板Properties。

           ViewTree.h和ViewTree.cpp:

                                由CTreeCtrl类派生出CViewTree类,用于实现出现在ClassView和FileView等中的树视图。

    资源文件

           一般我们使用MFC生成窗口程序都会有对话框、图标、菜单等资源,应用程序向导会生成资源相关文件:res目录、HelloWorld.rc文件和Resource.h文件。

           res目录:工程文件夹下的res目录中含有应用程序默认图标、工具栏使用图标等图标文件。

           HelloWorld.rc:包含默认菜单定义、字符串表和加速键表,指定了默认的About对话框和应用程序默认图标文件等。

           Resource.h:含有各种资源的ID定义。

    预编译头文件

    几乎所有的MFC程序的文件都要包含afxwin.h等文件,如果每次都编译一次则会大大减慢编译速度。所以把常用的MFC头文件都放到了stdafx.h文件中,然后由stdafx.cpp包含stdafx.h文件,编译器对stdafx.cpp只编译一次,并生成编译之后的预编译头HelloWorld.pch,大大提高了编译效率。

    编译链接生成文件

           如果是Debug方式编译,则会在解决方案文件夹和工程文件夹下都生成Debug子文件夹,而如果是Release方式编译则生成Release子文件夹。

           工程文件夹下的Debug或Release子文件夹中包含了编译链接时产生的中间文件,解决方案文件夹下的Debug或Release子文件夹中主要包含有应用程序的可执行文件。

    实际上在前面自动生成的框架中比较重要的类包括以下几个:CHelloWorldApp、CMainFrame、CHelloWorldDoc和CHelloWorldView

    四个主要类的关系简单讲下:

    CHelloWorldApp类处理消息,将收到的消息分发给相应的对象。

    CMainFrame是视图CHelloWorldView的父窗口,视图CHelloWorldView就显示在CMainFrame的客户区中。

    视图类CHelloWorldView用来显示文档类CHelloWorldDoc中的数据,并根据对视图类的操作修改文档类的数据。一个视图类只能跟一个文档类相联系,而一个文档类可以跟多个视图类相联系。

    程序运行都要有入口函数,在之前的C++教程中都是main函数,而Windows应用程序的入口函数是WinMain函数,MFC程序也是从WinMain函数开始的

    MFC消息映射机制概述

    添加消息处理函数

    右键点击CMainFrame,选择类向导,然后选择消息中的WM_LBUTTONDOWN,添加,然后选择编辑代码

     

    右键点击CDrawView,选择类向导,然后选择消息中的WM_LBUTTONDOWN,添加,然后选择编辑代码

    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
        // TODO: 在此添加消息处理程序代码和/或调用默认值
        MessageBox("view clicked");
        CView::OnLButtonDown(nFlags, point);
    }

    注意:编译过程中,出现不能将参数 1 从“const char [11]”转换为“LPCWSTR”的编译错误

    解决方法:

    选中项目,然后点击属性——>配置属性——>常规——>项目默认值——>字符集,选为“使用多字节字符集"

     

    结果是框架类编写的程序不出现,View类编写的类,点击出现结果

    View类在框架类窗口之上,鼠标移动、点击只能由view类窗口进行捕获

    Tip:在VS2010环境中,在MFC中删掉一个响应函数

  • 相关阅读:
    使用PowerDesigner创建表并导入到数据库
    第二次作业——结对项目之需求分析与原型模型设计
    使用Git进行代码管理
    常用
    头文件
    只出现一次的数
    链表实现基础排序算法
    判断链表有公共点
    单链表判环
    二叉树非递归遍历
  • 原文地址:https://www.cnblogs.com/yangyuqing/p/10239736.html
Copyright © 2011-2022 走看看