Chinaunix首页 | 论坛 | 博客
  • 博客访问: 267965
  • 博文数量: 45
  • 博客积分: 1618
  • 博客等级: 上尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-11 10:13
文章分类

全部博文(45)

文章存档

2012年(1)

2011年(25)

2010年(19)

我的朋友

分类: C/C++

2011-02-22 11:06:50

在创建了最简答的MFC程序后,下面就是将框架类和App类分离,使用2010的MFC类创建向导创建框架类生成代码,如下

#pragma once


// CBridgeWindow 框架


class CBridgeWindow : public CFrameWnd
{
    DECLARE_DYNCREATE(CBridgeWindow)
protected:
    CBridgeWindow(); // 动态创建所使用的受保护的构造函数

    virtual ~CBridgeWindow();

protected:
    DECLARE_MESSAGE_MAP()
};

注意此时CBridgeWindow的构造函数是protected的,也就是我没在应用程序类里面直接使用new CBridgeWindow是无法创建成功的,这就需要MFC的动态创建特性,注意要动态创建的类里面必须有 DECLARE_DYNCREATE(CBridgeWindow)宏定义,并且在其实现文件里面有IMPLEMENT_DYNCREATE(CBridgeWindow, CFrameWnd)宏定义,这样该类才能支持动态创建

    virtual BOOL InitInstance()
    {
        CRuntimeClass* pRuntimeClass = RUNTIME_CLASS(CBridgeWindow);
        //CBridgeWindow必须有一个缺省构造函数
        CObject* pObject = pRuntimeClass->CreateObject();
        //用IsKindOf检测是否是CBridgeWindow类的实例
        ASSERT(pObject->IsKindOf(RUNTIME_CLASS(CBridgeWindow)));
        m_pMainWnd =(CWnd *) pObject;
        m_pMainWnd->ShowWindow(m_nCmdShow);
        m_pMainWnd->UpdateWindow();
        return TRUE;
    }


阅读(1690) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~