`
javasalatu
  • 浏览: 723875 次
  • 性别: Icon_minigender_2
  • 来自: 北京
博客专栏
96df99eb-e89d-3228-9c8e-967fc745ec52
程序员的自我经营之道
浏览量:7705
文章分类
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics