界面库Prof-UIS初探学习

近试试Prof-UIS界面库(www.prof-uis.com)的用法,其帮助感觉不是很好。结合其Samples,把一些学习笔记记录如下。

先说一下Prof-UIS。在运行其Samples或者将这个界面库用到其它Project中之前,需要编译ProfUISDLL(对于静态库ProfUISLIB),但是运行某些Samples,比如Skinable,提示说需要用到ProfSkinDll,于是先编译它,但是又需要libPNGDLLCRT-d.lib,=>先编译LibPNG(编译时选择LibPNG-Win32 Used LIBs Debug(DLL CRT))

 

比如要编译Skinable,整个过程:(好像编译后运行出错,why?)

1.先编译ZLib和LibPNG (这里选择Build->Set Active Project Configuration中为Debug,DLL的。注意,这样编译生成的文件是ZLibDLLCRT-d.lib和LibPNGDLLCRT-d.lib。如果选择其他,生成的文件名是对应的。)

2.然后编译ProfSkinDll (对应上面的,选择Win32 MBCS Debug)

3.现在可以编译Skinable了。

(编译是注意设置好是Debug,还是Realse,是static还是非,是MBCS还是ANSI或其他,注意看看Set Active Project Configuration就知道了。)

 

将已有的MFC程序移至到基于Prof-UIS(以SDI程序为例)。

1.在VC6中建SDItesst的SDI项目。

这里简单说明怎样将其自动生成的

CToolBar  m_wndToolBar; 改为基于Prof-UIS的CExtToolControlBar  m_wndToolBar;

(1). 在StdAfx.h中增加 #include <Prof-UIS.h>,当然VC环境中include,lib,src等目录先设置好。

(2). 将CToolBar->CExtToolControlBar

(3). 在CMainFrame::OnCreate()中修改代码如下:

修改一:

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

改为:

if( !m_wndToolBar.Create(

                _T( "Toolbar name" ),

                this,

                AFX_IDW_TOOLBAR

              )

              || !m_wndToolBar.LoadToolBar( IDR_MAINFRAME )

              )

修改二:

       EnableDocking(CBRS_ALIGN_ANY);

改为:

       if( !CExtControlBar::FrameEnableDocking(this) )

       {

              ASSERT( FALSE );

              return -1;

       }

运行如图1,ToolBar虽然可以拖动,可是图标怎么看不见?


图1

后来看其Samples。需要在InitInstance()函数中增加如下代码:

       VERIFY(

              g_CmdManager->ProfileSetup(

                     __PROF_UIS_PROJECT_CMD_PROFILE_NAME

                     )

              );

       AfxEnableControlContainer();

       ……

当然需要定义如下的宏:

#define __PROF_UIS_PROJECT_CMD_PROFILE_NAME _T("ProfSDI-command")

#define __PROF_UIS_PROJECT_DLG_PERSIST_REG_KEY _T("ProfSDI-resizable-dialog ")

 

然后在OnCreate中增加:

       if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

              return -1;

       ……

              VERIFY(

              g_CmdManager->ProfileWndAdd(

                     __PROF_UIS_PROJECT_CMD_PROFILE_NAME,

                     GetSafeHwnd()

                     )

              );

       VERIFY(

              g_CmdManager->UpdateFromMenu(

                     __PROF_UIS_PROJECT_CMD_PROFILE_NAME,

                     IDR_MAINFRAME

                     )

              );(这一部分好像也不需要)

运行如图2。


图2

如何使得此ToolBar具有不同的风格呢?

需要在InitInstance()中增加其他的代码:

       g_PaintManager.InstallPaintManager(

                   RUNTIME_CLASS(CExtPaintManagerOffice2007_R2_Obsidian)

         );

       AfxEnableControlContainer();

       ……

运行如图3。


图3

并将状态条和菜单也改了。见图4。


图4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值