首页 / 软件开发 / C++ / 软件框架的利器、TangramMini组件应用教程五:SDI中的应用
软件框架的利器、TangramMini组件应用教程五:SDI中的应用2010-09-29 vckbase 骆归前面四篇中我介绍了TangramMini组件在对话框程序中的使用,本篇我将简单介绍一下TangramMini组件在SDI(单文档界面)程序中的使用。在SDI程序中利用TangramMini组件搭建框架使应用程序框架设计更加快捷、简单。废话我不多说,直接切入主题。请注意,要安装TangramMini组件,请到http://www.tangrammini.com中下载组件安装包并安装,并且如果要运行源代码,也必须先安装TangramMini组件方可编译运行。首先我们要先生成一个普通的SDI程序。启动Microsoft Visual C++ 6.0开发环境,进入主菜单中的File->New,在New对话框,选择Projects页,然后选择MFC AppWizard (exe),在Project name中输入SDI(请注意:这里的SDI是工程名,你也可以随便取个什么名字),然后单击OK按钮,在向导的第一页选择Single document(单文档)类型,然后单击Finish完成单文档程序的创建,你也可以不直接Finish,可以先Next做一些别的修改,然后完成。由于不是对话框程序,这次我们不能直接在界面上拖入TangramMiniCtrl控件,只能动态创建TangramMiniCtrl控件,在这里我们有两个办法创建TangramMiniCtrl,一个办法当然是直接手工创建;另一个办法就是利用TangramMiniB2C组件创建,因为TangramMiniB2C有辅助创建TangramMiniCtrl的功能,当然要利用TangramMiniB2C组件创建TangramMiniCtrl控件,我们就必须先创建TangramMiniB2C组件。在这里我决定使用第二种办法,就是利用TangramMiniB2C组件创建TangramMiniCtrl控件,因为方法更加简单方便,编码更少。在TangramMini组件安装之后,所带的案例中,这两种创建方法都有相对应的例子,大家也可以自己查看。为了编码方便,我们直接从安装包的案例源码中找到TangramMini_i.c与TangramMini_i.h两个文件复制到之前新建的SDI工程源码下。搞定之后,我们前期工作准备完毕,开始编码:1、打开stdafx.h文件,加入包含头文件语句:#include "TangramMini_i.c"
#include "TangramMini_i.h"
为了编译不出现问题,我这里提醒大家,最好是先包含.c文件,再包含.h文件。2、由于需要创建ActiveX组件,所以需要COM支持,在创建TangramMiniB2C组件之前必须调用CoInitialize(NULL)语句。3、在CMainFrame类中分别加入成员变量m_pMiniB2C与m_pMiniCtrl,类型分别为ITangramMiniB2C*与ITangramMiniCtrl*类型。4、修改CMainFrame类的OnCreate()函数,在函数尾部加入下例代码(也是本篇中最主要的代码):CoInitialize(NULL);
HRESULT hr = CoCreateInstance(CLSID_TangramMiniB2C,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITangramMiniB2C,
(LPVOID*)&m_pMiniB2C);
if (SUCCEEDED(hr) && (m_pMiniB2C != NULL))
{
m_pMiniB2C->put_TargetHandle((LONG)m_hWnd);
m_pMiniB2C->get_TangramMiniCtrl(&m_pMiniCtrl);
VARIANT_BOOL bSucceed;
m_pMiniCtrl->LoadFile(L"test.xtml",&bSucceed);
m_pMiniCtrl->SetMDIClient(
L"Page1_S0001_S0000",
(LONG)theApp.m_pClientView->m_hWnd,
0,&bSucceed);
}