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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值