第3课 MFC框架程序

1. main  WinMain之前,全局变量(对象)已经被分配内存并初始化了。
2. MFC  中在WinMain之前有个 theApp全局变量先被构造并被初始化,而由于子类构造函数执行前,其父类的构造函数先被执行,所以 CTestApp的父类CWinAPP 的构造函数先执行。产生了 theApp对象后,在WinMain()中的指针 *pThread*pApp 就有了内容。
知识点:  Afx前缀的函数代表应用程序框架 (Application Framework)函数,都是全局函数,在程序的任何地方都可以调用它。
3.MFC 大致流程:
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);
完成了将这三个类关联起来的工作。
4. 如何在单文档文件中显示一个  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).  create函数的第二个参数中加入 WS_VISIBLE 参数才行。否则必须调用 ShowWindow
也可以在  viewOnCreate 消息响应函数中加入
     (3).CButton  类的定义头文件在 afxwin.h中,而stdafx.h 包含了afxwin.h,所以可以直接使用。因为 MFC中的每一个类中都有#include "stdafx.h"的声明。
5  一个单文档窗口(多文档),标题栏和菜单栏位于 MainFrame的非客户区,而工具栏位于 MainFrame的客户区。而视图位于MainFrame的客户区。

猜你喜欢

转载自blog.csdn.net/zhang_zxk/article/details/52401882
今日推荐