第3课 MFC框架程序

来源:互联网 发布:lomo拍立得知乎 编辑:程序博客网 时间:2024/06/06 20:55
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的客户区。
0 0
原创粉丝点击