概览

CWinApp为应用程序类, CWinApp由 CWinThread 派生而来 ,后者表示可能具有一个或多个线程的应用程序的主执行线程,基于框架生成的应用程序必须有且仅有一个从 CWinApp 派生的类的对象并创建窗口之前先构造该对象 。
封装了Windows应用程序要做初始化、运行、终止3个主要任务,其对应的3个主要函数是InitInstance()、Run()、ExitInstance(),上述3函数与 OnIdle() 函数实际位于 CWinThread 类中。此处将这些函数作为 CWinApp 成员来探讨,因为探讨所关心的是对象作为应用程序对象而不是主线程的角色。
应用程序类构成应用程序的主线程,使用Win32 API也可以创建辅助线程,当然也可以使用MFC。
与其他类型Windows应用程序一样,MFC应用程序也有WinMain函数,此函数由类库提供,不必自己编写,并在应用程序启动时调用WinMain 执行注册窗口类等标准服务,后调用应用程序对象的成员函数初始化和运行应用程序,可通过重写由 WinMain 调用的 CWinApp 成员函数来自定义WinMain。
为初始化应用程序,WinMain 调用应用程序对象的 InitApplication 和 InitInstance 成员函数。为运行应用程序的消息循环,WinMain 调用 Run 成员函数。在终止时,WinMain 调用应用程序对象的 ExitInstance 成员函数。下图显示了框架应用程序中的执行顺序。

类成员

属性

m_pszAppName 指定了应用程序的名字
m_hInstance
标识了应用程序的当前实例

m_hPrevInstance
在32位应用程序中被设为NULL

m_lpCmdLine
指向一个以null结尾的字符串,指定了应用程序的命令行

m_nCmdShow
指定最初如何显示窗口

m_bHelpMode
指明用户是否处于Help上下文模式(通常用SHIFT+F1激活)

m_pActiveWnd
当一个OLE服务器是现场可激活时,它指向容器应用程序的主窗口

m_pszExeName
应用程序的模块名字

m_pszHelpFilePath
应用程序的帮助文件的路径

m_pszProfileName
应用程序的。INI文件名

m_pszRegistryKey
用于确定保存应用程序主要设置的完整的注册表键

m_pDocManager
用于保存文档模板管理类的指针(MSDN中没有这个数据成员)

方法

CWinApp
构造方法
LoadCursor
载入光标资源

LoadStandardCursor
载入WINDOWS.H中IDC_常量所指定的Windows预定义光标

LoadOEMCursor
载入WINDOWS.H中OCR_常量所指定的WindowsOEM预定义光标

LoadIcon
载入图标资源

LoadStandardIcon
载入WINDOWS.H中IDI_常量所指定的Windows预定义图标

LoadOEMIcon
载入WINDOWS.H中OIC_常量所指定的WindowsOEM预定义图标

RunAutomated
检查程序命令行是否指定/Automation选项。已不用。应当在调用ParseCommandLine之后使用CCommandLineInfo::m_bRunEmbedded中的值

RunEmbedded
检查程序命令行是否指定/Embedding选项。已不用。应当在调用ParseCommandLine之后使用CCommandLineInfo::m_bRunEmbedded中的值

ParseCommandLine
解析命令行中的每个参数和标志

ProcessShellCommand
处理命令行参数和标志

GetProfileInt
从应用程序的。INI文件的一个入口中获取一个整数

WriteProfileInt
将一个整数写到应用程序的。INI文件的入口

GetProfileString
从应用程序的。INI文件的一个入口中获取一个字符串

WriteProfileString
将一个字符串写到应用程序的。INI文件的入口

AddDocTemplate
将一个文档模板加到应用程序的可用文档模板列表中

GetFirstDocTemplatePosition
获取第一个文档模板的位置

GetNextDocTemplate
获得文档模板的位置。可以递归调用

OpenDocumentFile
由框架调用,用以从文件打开一个文档

AddToRecentFileList
将一个文件名加入最近使用(MRU)的文件列表

SelectPrinter
选择先前由用户在打印对话框中指定的打印机

CreatePrinterDC
创建一个打印机设备环境

GetPrinterDeviceDefaults
获得缺省的打印机设备


InitInstance
可被重载以执行Windows的实例初始化,比如创建窗口对象

InitApplication
初始化.

Run
运行缺省的消息循环。可被重载以定制消息循环

OnIdle
可被重载以执行应用程序指定的空闲时处理

ExitInstance
可被重载以在应用程序结束时执行清除操作

HideApplication
在关闭所有的文档之前隐藏应用程序

CloseAllDocuments
关闭所有打开的文档

PreTranslateMessage
在消息被分派到Windows函数::TranslateMessage和::DispatchMessage之前过滤消息

SaveAllModified
提示用户保存所有改变了的文档

DoMessageBox
为应用程序实现AfxMessageBox

ProcessMessageFilter
在消息到达应用程序之前截取特定的消息

ProcessWndProcException截取应用程序的消息和命令处理函数抛出的未被处理的异常

DoWaitCursor
打开或关闭等待光标

OnDDECommand
框架调用这个函数以响应动态数据交换(DDE)执行命令

WinHelp
调用Windows的WinHelp函数

LoadStdProfileSettings
载入标准的。INI文件设置并允许MRU文件列表特性

SetDialogBkColor
设置对话框和消息框的缺省背景颜色

SetRegistryKey
使应用程序的设置保存在注册表中,而不是INI文件中

EnableShellOpen
允许用户通过Windows的文件管理器打开数据文件

RegisterShellFileTypes
在Windows的文件管理器中注册所有的应用程序文档类型

Enable3dControls
使控件具有三维外观(动态库)

Enable3dControlsStatic
使控件具有三维外观(静态库)

OnFileNew
实现ID_FILE_NEW命令

OnFileOpen
实现ID_FILE_NEW命令

OnFilePrintSetup
实现ID_FILE_PRINT_SETUP命令

OnContextHelp
处理应用程序内的SHIFT+F1命令

OnHelp
处理应用程序内的F1帮助命令(使用当前的上下文)

OnHelpIndex
处理ID_HELP_INDEX命令,提供缺省的帮助主题

OnHelpFinder
处理ID_HELP_FINDER和ID_DEFAULT_HELP命令

OnHelpUsing
处理ID_HELP_USING命令

 
 

MFC-CWinApp的更多相关文章

  1. 侯老师的话(Application Framework)

    摘自http://blog.csdn.net/zlc19876/article/details/5355022 本篇文章主要介绍了"侯老师的话(Application Framework)& ...

  2. MFC基础窗口创建,CWinApp、CFrameWnd

    1.CWinApp(包括了这个类的导出类):代表了我们的程序.封装了消息循环等. 2.CFrameWnd:代表了程序的框架窗口.封装了窗口的注册.创建.显示.刷新.等等窗口操作. 3.Win32中.一 ...

  3. MFC学习之CWinApp类

    CWinApp是一个基类,你通过它来继承Windows应用程序对象.应用程序对象为你提供了初始化应用程序(以及它的每一个实例 和运行应用程序所需的成员函数.它实现主事件循环并把事件分发给MFC中其他类 ...

  4. 关于MFC框架程序中CWinApp::OnIdle

    很早之前就发现,我写的图形引擎在MFC框架程序中的刷帧率始终在60FPS左右.好在自己的程序对刷帧率的要求不是很高,所以一直没有太过纠结此事.直到今天看了别人的程序才发现应该在函数CWinApp::O ...

  5. MFC函数—CWinApp::LoadStdProfileSettings

    从 InitInstance 成员函数内调用该函数,启用和加载最近使用的(MRU)文件和最后浏览状态的列表.void LoadStdProfileSettings(   UINT nMaxMRU = ...

  6. VS2010 MFC对Excel的操作

    这是帮别人做项目遇到的一个问题,的那个是纠结了老长时间,本以为是一件很轻松的事... 首先,这里采用了OLE来对Excel进行操作,网上其实有大把的例子,虽然都可以运行,但是并不能满足项目要求,其实我 ...

  7. MFC的本质

    一.引言 上一专题中,纯手动地完成了一个Windows应用程序,然而,在实际开发中,我们大多数都是使用已有的类库来开发Windows应用程序.MFC(Microsoft Foundation Clas ...

  8. MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(02)

    1.3.1 应用程序对象 MFC应用程序的核心就是基于CWinApp类的应用程序对象,CWinApp提供了消息循环来检索消息并将消息调度给应用程序的窗口.当包含头文件<afxwin.h>, ...

  9. MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(01)

    #include <afxwin.h> class CMyApp : public CWinApp { public: virtual BOOL InitInstance(); }; cl ...

  10. MFC-01-Chapter01:Hello,MFC---1.2 MFC简介

    1.2 MFC简介 MFC是Microsoft提供的放置Windows API的面向对象的包装的C++类库.MFC大约封装了好几百个类,其中有一些可以直接调用,有些类可以作为用户自己的类的基类.一些M ...

随机推荐

  1. 部分真验货客户未取进FP IN_SALES_ORDER表有数据,前台规划页面没显示

    描述:部分真验货客户未取进FP,检查发现IN_SALES_ORDER表有数据630\600\610行项目数据,但前台只显示630数据,600和610前台没有显示 1.查看IN_SALES_ORDER表 ...

  2. oracle的dmp数据文件的导出和导入以及创建用户

    关于dmp文件我们用的还是比较多的,dmp文件它是作为oracle导入和导出表使用的文件格式,今天就将dmp文件导出和导入进行学习. dmp文件导出 dmp文件导出用的比较多的一般是三种,他们分别是: ...

  3. 15-js提交表单的简单检测实例

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. ROS学习笔记二(创建ROS软件包)

    catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 必须包含一个catkin编译文件package.xml(manifests文件),此文件包含了描述该软件包的重要信 ...

  5. CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板

    C#生成sql视图的实体类 using System;using System.Text;using CodeSmith.Engine;using SchemaExplorer;using Syste ...

  6. pkg_config找不到库

    解决方法 假设libavutil默认安装时libavutil.pc安装到了 /usr/lib64/lib/pkgconfig/ 中,而 echo $PKG_CONFIG_PATH 结果中没有这个路径, ...

  7. Autotest Weekly Report

    Autotest Weekly Report Reported by: 12/16/2013 What I Did Last Week Debug autotest scripts of ‘smart ...

  8. 在EF中使用MySQL的方法及常见问题

    有时需要在网上租用空间或数据库,Mysql成本低一些,所以想将sql server转成mysql…… 注意:在安装Mysql时要选择文字集为utf8,否则将不能使用中文(当前也可以在创建数据库时使用u ...

  9. 前端之css笔记3

    一 display属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  10. jquery ajax请求方式与提示用户正在处理请稍等

    为了提高用户体验度,我们通常会给出 “正在处理,请稍等!”诸如此类的提示.我们可通过设置$.ajax()下的参数beforeSend()来实现 初次使用$.ajax() ,我没有去区分过ajax的异步 ...