Prof-UIS学习

                      Prof-UIS 2.6

第1章 框架生成的基本结构

       1.1向导生成的代码

在使用Prof-UIS的向导时不选择任何Prof-UIS的属性,来生成一个SDI工程。 

 

Prof-UIS向导默认在程序中使用Prof-UIS扩展的工具栏和状态栏。下面是向导生成的代码:

在stdafx.h中包含了Prof-UIS扩展库的头文件

#include <Prof-UIS.h>

在YourApp.cpp中加为CYourApp类添加了一个新的成员函数

void SetupUiAdvancedOptions();

定义如下:

此函数在InitInstance函数中调用如下:

它的作用是初始化Prof-UIS库并设置相应的控件风格

 

g_CmdManager->ProfileSetup(__PROF_UIS_PROJECT_CMD_PROFILE_NAME)中

g_CmdManager是Prof-UIS库中的一个全局变量定义在ExtCmdManager.h和ExtCmdManager.cpp中如下:

extern __PROF_UIS_API CExtCmdManager::CExtCmdManagerAutoPtr g_CmdManager;和

CExtCmdManager::CExtCmdManagerAutoPtr g_CmdManager;

CExtCmdManager类是一个辅助类,它包含着所用的Prof-UIS的用户接口的控件信息,包括,我们可以通过全局变量g_CmdManager来得到指向CExtCmdManager的指针。

CExtCmdManagerAutoPtr类有一个重载运算符

// command manager instance access

CExtCmdManager * operator -> ();

通过g_CmdManager->可以得到CExtCmdManager的指针。

 

 1.2 Command Manager,Command Profile, Command description

Command Manager在Prof-UIS中是一个重要的概念,Command Manager是类CExtCmdManager的对象。Command Manager是一个指定的Command Profile的集合,每一个Command Profile是类CExtCmdProfile的对象,每一个Command Profile都有它自己唯一的名字并保存有一系列的HWND句柄,这就使得一个窗口(控件也是窗口)知道它属于哪一个Command Profile。Command Profile更重要的任务是保存Command description,Command description是类CExtCmdItem的对象,它保存这单一窗口的信息,包括:

标识符

菜单项,工具栏按钮,提示,状态栏的文本

图标

支持可扩展的弹出菜单的命令

 

大部分应用程序都是基于Command Manager中的单一的Command Profile,这个Command Profile保存这主框架窗口或主对话框的HWND句柄,这允许主窗口和它的所有的子窗口都可以自动的得到需要的Command description。

当开始使用Prof-UIS库时必须初始化一个Command Manager,将一个Command Profile添加到Command Manager中,然后把要使用的所有的Command description放到这个Command Profile中。你要在程序初始化或窗口创建时添加下列代码:

注意上面的"name of the command profile"这是Command Profile的标识符,必须使用你想要添加到并且是以及安装到Command Manager的Command Profile的名字。

注意,最后Command Manager必须被销毁,在CMainFrame::DestroyWindow()中(基于对话框的程序在OnOK()和OnCancel()中),以使得窗口句柄得到释放:

g_CmdManager->ProfileWndRemove(GetSafeHwnd());

 

1.3初始化过程

了解了Command Manager的概念和Prof-UIS库的初始化后再来看看用Prof-UIS向导生成的代码的初始化过程:

首先初始化

首先为Command Manager安装一个不与任何窗口关联的Command Profile,在YourApp.h中有如下的定义

在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中向已安装的Command Profile中添加关联窗口,

在BOOL CMainFrame::DestroyWindow()中销毁Command Manager

    

1.4 显示风格

在void CUIS0App::SetupUiAdvancedOptions()中有下面一段代码:

  

这段代码是设置显示风格和设在菜单风格的代码。

g_PaintManager是全局变量在ExtPaintManager.h中ExtPaintManager.cpp分别有定义:

extern __PROF_UIS_API CExtPaintManager::CExtPaintManagerAutoPtr g_PaintManager;

CExtPaintManager::CExtPaintManagerAutoPtr g_PaintManager;

 

bool CExtPaintManager::CExtPaintManagerAutoPtr::

       InstallPaintManager(CRuntimeClass * pRtcPaintManager)

bool CExtPaintManager::CExtPaintManagerAutoPtr::

       InstallPaintManager(CExtPaintManager * pPaintManager)

是用来安装显示风格的,以上的

CExtPaintManager是传统的显示风格9x/2000的风格

CExtPaintManagerXP

CExtPaintManagerOffice2003等都是从CExtPaintManager派生的

 

菜单的显示样式,具体在菜单的章节中介绍。

 

    1.5 CExtNCW

    Prof-UIS向导生成的代码中,对话框和主框架窗口都是从CExtNCW模板类继承的如:

class CAboutDlg : public CExtNCW < CExtResizableDialog >

class CMainFrame : public CExtNCW < CFrameWnd >

是对窗口的模板化,其中对窗口进行了一些处理以便适应不同显示样式对窗口的要求,主要是Office2007模式。

    其中class CMainFrame : public CExtNCW < CFrameWnd >

使用了基本的模板类,但是

class CAboutDlg : public CExtNCW < CExtResizableDialog >

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值