MiniUtilityFramework(四):CDominatorBase

//========================================================================
//TITLE:
// MiniUtilityFramework(四):CDominatorBase

//AUTHOR:
// norains
//DATE:
// 23-February-2009
//Environment:
// VISUAL STUDIO 2005 + WINDOWS CE 5.0
//========================================================================

CDominatorBase是MUF中唯一必须要继承的类。因为该类有两个纯虚函数,如果需要实例化,就必须要继承重载。

我们来看看这两个纯虚函数:

//----------------------------------------------------------------------------------
//Description:
//Create the new window object. You should call the CloseWndObj to release the resource
//Parameters:
//strWndName : [in] The window name
//-----------------------------------------------------------------------------------
virtual CUserWnd* CreateWndObj(const TSTRING &strWndName) = 0;

//----------------------------------------------------------------------------------
//Description:
//Close the object of the window.
//Parameter:
//pObject : [in] The handle of the window which returned by CreateWndObj function.
//-----------------------------------------------------------------------------------
virtual BOOL CloseWndObj(CUserWnd* pObject) = 0;


设置这两个纯虚函数的原因是给使用者提供一个创建窗口的接口,令其能实现特有的功能。

当然,如果为了简便,可以直接在CreateWndObj中直接返回CUserWnd的实例:

CUserWnd *pObj = new CUserWnd(GetImgTab(),GetStrTab());
return pObj;

不过这样就只能是有限的几个功能,基本上无法满足用户的需求。

如果客户想创建自己独有功能的窗口,必须继承于CUserWnd,然后在CreateWndObj创建相应的实例。

例如:

class CSettingWnd: public CUserWnd { public: CSettingWnd(); virtual ~CSettingWnd(); ... } class CVideoWnd: public CUserWnd { public: CVideoWnd(); virtual ~CVideoWnd(); ... } class CDominator: public CDominatorBase { public: virtual CUserWnd* CreateWndObj(const TSTRING &strWndName); virtual BOOL CloseWndObj(CUserWnd* pObject) ; ... } CUserWnd* CDominator::CreateWndObj(const TSTRING &strWndName) { CUserWnd *pObj = NULL; if(strWndName == TEXT("WND_VIDEO")) //WND_VIDEO是在配置文件中定义的 { pObj = new CVideoWnd(GetImgTab(),GetStrTab()); } else if(strWndName == TEXT("WND_SETTING")) //WND_SETTING是在配置文件中定义的 { pObj = new CSettingWnd(GetImgTab(),GetStrTab()); } else { pObj = CDominatorBase::CreateWndObj(GetImgTab(),GetStrTab()); } return pObj;

代码中的窗口名是在配置文件中定义的,例如:

[WND_VIDEO]
TYPE=WINDOW

...

[WND_SETTING]
TYPE=WINDOW

...

夹杂在[]中的SECTION即为代码中的窗口名。


CDominatorBase中还有两个public函数,分别如下:

//-----------------------------------------
//Description:
//Initialize
//Parameter:
//strIniFile : [in] The ini file path
//-----------------------------------------
virtual BOOL Initialize(const TSTRING &strIniFile);

//-----------------------------------------
//Description:
//Show the main window
//Parameters:
//bShow : [in] TRUE - show window. FALSE - hide.
//-----------------------------------------
virtual BOOL ShowMainWnd(BOOL bShow);

Initialize函数的形参是配置文件的路径,如:

CDominator dom;
dom.Initialize(TEXT("//NDND//MUF.ini"));

ShowMainWnd用来决定主窗口是显示还是隐藏。“主窗口”指的的是在配置文件中段名为WND_MAIN的窗口,即:

[WND_MAIN]
TYPE=WINDOW

以上两个函数一般都是在程序入口函数WinMain中调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值