Visual C++ 6.0技术内幕笔记(二)

来源:互联网 发布:淘宝助理批量删除宝贝 编辑:程序博客网 时间:2024/05/17 06:31

Visual C++ 6.0技术内幕笔记(二)

第一部分 Windows、Visual C++ 和应用程序基础框架

第二章 Microsoft 基本类库应用程序框架

示例(hello)程序的生与死
1.          部分出示化工作
2.          构造应用程序的唯一应用类对象(CMyApp)
3.          调用WinMain函数,该函数隐藏于应用程序框架之内
4.          WinMain寻找唯一应用类对象
5.          WinMain调用应用类对象InitInstance函数
6.          InitInstance函数调用所需要的构造,显示应用程序主框架(CMainWindow)
7.          WinMain调用Run函数运行消息循环
8.          主框架函数析构(~CMainWindow)
9.          从Run函数中退出
10.        从WinMain函数中退出
11.        唯一应用类对象析构(~CMyApp)
 
//文件:Hello.h
 
class CMyApp : public CWinApp //主程序
{
public:
    virtual BOOL InitInstance (); //virtual关键字属于语法范畴,还没有学习到。暂时不必在意
};
 
class CMainWindow : public CFrameWnd //主框架窗口
{
public:
    CMainWindow ();
 
protected:
    afx_msg void OnPaint (); //事件
    DECLARE_MESSAGE_MAP () //消息映射
};
 
//文件:Hello.cpp
 
#include <afxwin.h>
#include "Hello.h"
 
CMyApp myApp; //定义全局变量
 
BOOL CMyApp::InitInstance () //调用构造初始化主框架
{
    m_pMainWnd = new CMainWindow;
    m_pMainWnd->ShowWindow (m_nCmdShow);
    m_pMainWnd->UpdateWindow ();
    return TRUE;
}
 
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) //消息宏
    ON_WM_PAINT ()
END_MESSAGE_MAP ()
 
CMainWindow::CMainWindow () //在构造函数中为窗体加入标题
{
    Create (NULL, _T ("Hello程序"));
}
 
void CMainWindow::OnPaint () //实现打印
{
    CPaintDC dc (this);
     dc.TextOut(0,0,"Hello,world!");
}
-----------------------------------翻译部分,英语很烂。自己能理解就行了--------------------------------
这里是MSDN中部分关于CwinApp的函数说明
Windows应用程序对象为初始化和运行具体的应用程序提供众多成员函数,而CWinApp类是Windows应用程序对象的基类。
每一个以MFC为基础的应用程序只能包含一个CwinApp对象。该对象被建立与C++全局变量建立之时以支持MFC库,而后Windows调用WinMain函数。该对象亦声明为全局变量。
当你从CWinApp继承一个类时,重写InitInstance函数以建立主窗体对象。
 
这里是MSDN中部分关于InitInstance的说明
应用程序初始化概念地可分为两个情况:WinMain函数调用该函数,程序第一次运行时应用程序初始化。程序多次启动时一个副本的初始化。
在windows中,重写InitInstance以初始化每个新的应用程序实例。代表性的,重写InitInstance以实例化主窗口对象和设置CWinThread::m_pMainWnd数据成员以指向窗口。
 
这里是MSDN中部分关于CFrameWnd的函数说明
CFrameWnd类提供与SDI窗体交互的功能,提供成员以管理窗体。
 
有三种方法构建一个框架窗口
     直接以Create构建
     直接以LoadFrame构建
     间接以文档模板构建
 
这里是MSDN中部分关于DECLARE_MESSAGE_MAP的函数说明
在类结尾部分声明 DECLARE_MESSAGE_MAP 。然后在.cpp文件为类定义成员函数,用BEGIN_MESSAGE_MAP宏链接每一个消息句柄函数然以END_MESSAGE_MAP宏结束。
注意:如果你在DECLARE_MESSAGE_MAP后声明任何成员,你必须为它们详细指定一个修饰符(public,private,or protected)。
----------------------------------------------------------------------------------------------------------
文档和视图 大部分MFC程序基于文档视图结构,数据与数据的用户视图分开。同一组数据也可以有多个视图(如股票价格可以有表格视图和图表视图)。
 
备注:建立时选择Win32项目-代码输入后选择-在共享 DLL 中使用 MFC,否则程序无法运行。
原创粉丝点击