zoukankan      html  css  js  c++  java
  • 第3章 MFC框架程序剖析

    参考: https://blog.csdn.net/u014162133/article/details/46573873

    1、

    2、MFC简介:MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C++类的集合,是一套面向对象的函数库,以类的方式提供给用户使用。利用这些类,可以有效发帮助程序员完成Windows应用程序的开发。

    MFC AppWizard是一个辅助生成源代码的向导工具,它可以帮助我们自动生成基于MFC框架的源代码。在向导的每一个步骤中,我们可以根据需要来选择各种特性,从而实现定制应用程序。

    3、我们在编写MFC程序时,在我们编写的程序中找不到WinMain函数,是因为MFC做了封装,将这些放到了安装路径下,比如:D:Program FilesMicrosoft Visual StudioVC98MFCSRC,WinMain函数在APPMODUL.CPP文件中,这个函数是在程序编译链接时,由链接器将该函数链接到我们的MFC程序中的。

    4MFC大致流程

    CTestApp theApp;//构造全局对象
    WinMain()
    {
        AfxWinMain();//调用下面的函数
    }
    AfxWinMain()
    {
        pThread->Initinstance();//初始化工作和注册窗口类,窗口显示和更新
        pThread->Run();//消息循环
    }
    
    //而在BOOL CTestApp::InitInstance()中的代码
    CSingleDocTemplate* pDocTemplate;
    pDocTemplate = new CSingleDocTemplate(
        IDR_MAINFRAME,
        RUNTIME_CLASS(CTestDoc),
        RUNTIME_CLASS(CMainFrame),       // main SDI frame window
        RUNTIME_CLASS(CTestView));
    AddDocTemplate(pDocTemplate);
    //完成了将这三个类关联起来的工作。

    程序执行顺序

    (1) 先执行到全局对象定义处:CTestApp theApp;

    (2) 然后到了TestApp的构造函数

    (3) 然后才执行到WinMain函数

    5、在程序入口函数mainWinMain加载前,系统已经为全局变量或全局对象分配了存储空间,并为他们赋了初始值。对一个全局对象来说,此时就已经调用了该对象的构造函数,构造该对象,并进行初始化操作。

    在MFC程序中,在WinMain之前有个theApp全局变量先被构造并被初始化,而由于子类构造函数执行前,其父类的构造函数先被执行,所以CTestApp的父类CWinAPP的构造函数先执行。产生了theApp对象后,在WinMain()中的指针*pThread和*pApp就有了内容,这两个指针返回的都是theApp对象的地址。

    6、对MFC程序来说,通过产生一个应用程序类的对象来唯一标识应用程序的实例。每一个MFC程序有且仅有一个从应用程序类(CWinApp)派生的类。每一个MFC程序实例有且仅有一个该派生类的实例化对象,也就是theApp全局对象。该对象就表示了应用程序本身。

    7、在MFC中,以Afx为前缀的函数都是全局函数,可以在程序的任何地方调用它们。

    8、

    9、

    10、窗口类、窗口类对象与窗口关系

    11、如何在单文档文件中显示一个CButton的对象?

    CMainFrame::OnCreate()中定义一个CButton的对象btn;然后调用

    btn.Create("维新",WS_DISABLED   |WS_CHILD | WS_VISIBLE | BS_AUTO3STATE,  CRect(0,0,300,100),/*GetParent(),*/this,123);

    注意:

    (1) 此处btn不能是局部变量,否则它的生命周期太短,将不能显示。

    (2) 在CBUTTON类的Create函数的第二个参数中加入WS_VISIBLE 参数才行。否则必须调用ShowWindow显示,也可以在view的OnCreate消息响应函数中加入

    (3) CButton类的定义头文件在afxwin.h中,而stdafx.h包含了afxwin.h,所以可以直接使用。因为MFC中的每一个类中都有#include "stdafx.h"的声明。

    (4) 按钮的父窗口不同,其显示位置也会有所差异。

    12、一些常用快捷方式:  

    功能分类

    快捷键

    说明

    File

    (文件)

    Ctrl+N

    New新建工程

    Ctrl+O

    Open 打开文件

    Find

    (查找)

    Alt+F3/Ctrl+F

    弹出查找对话框

    F3

    查找下一个

    Shift+F3

    查找上一个

    Ctrl+H

    替换

    Ctrl+]/Ctrl+E

    寻找下一半括弧

    F4

    寻找下一个错误/警告位置

    Shift+F4

    寻找上一个错误/警告位置

    格式

    Ctrl+U

    将选定区域转换成小写

    Ctrl+Shift+U

    将选定区域转换成大写

    Alt+F8

    自动格式重排

    Build

    (建立)

    F7

    Build(编绎并链接成exe文件)

    Ctrl+F7

    Compile(编译)

    Ctrl+F5

    Execute(编译+链接+运行)

    Ctrl+Shift+F5

    Restarts the program(重新运行程序)

    Debug

    (调试)

    F5

    Go(顺序执行)

    F11

    step into (顺序执行,进入循环或函数)

    F10

    step over(顺序执行,不进入循环或函数)

    Ctrl+F10

    Run to cursor(自动执行到用户光标所指的语句前)

    Shift+F5

    Stop Debugging(停止调试)

    F9

    Insert/Remove breakpoint(在当前行插入/去掉断点)

    Ctrl+Shift+F9

    去掉所有断点

     

  • 相关阅读:
    冲刺阶段 day1
    目标系统流程图 数据流图
    团队作业二
    校外实习报告(十二)
    校外实习报告(十一)
    第二周实习总结
    校外实习报告(十)
    校外实习报告(九)
    校外实习报告(八)
    校外实习报告(七)
  • 原文地址:https://www.cnblogs.com/happykoukou/p/8795309.html
Copyright © 2011-2022 走看看