应 用 案 例
帮 助 文 档
 
 
 
 
GardenUI界面库使用说明
GardenUI Library 是windows平台下图形用户界面的专业开发包,该开发包基于并很好的扩展了Microsoft的MFC库。此开发工具包开发用户界面时使用XML文件定义图形界面,使用时简单、快捷,代码量小,真正作到界面和业务分离。此开发工具包没有采用市面上大多换肤软件所使用的钩子和子类化技术,效率高,可扩展性强。

目标用户:
任何使用Microsoft Visual C++ 6.0、Microsoft Visual C++ 2003、Microsoft Visual C++ 2005的程序开发人员。

主要特点:
*、功能强大的界面定制和界面扩展功能,效率高
*、软件界面使用xml文档进行定义,使用简单, 快捷, 真正作到界面和业务分离
*、增加各种无窗口控件,此类控件支持Alpha通道的图像和样式的绘制?
*、增加各种扩展功能的控件,如任务栏,停靠栏,扩展的工具条,扩展的列表控件、扩展的树控件等等
*、提供专业的皮肤设计工具,使您制作软件界面如同制作网页一样方便
*、界面库支持各种图像格式,如:jpg、bmp、png、gif等等?
*、界面库还为各种小型的软件提供快捷的界面定制方案
*、支持动态换肤、皮肤打包和皮肤包加密
*、支持各种windows平台,包括:Windows98,Windownt4.0,Windows2000,WindowsXp,Windows2003等

使用方法:

  1. [非代码部分]根据美工设计出来的界面效果图编写界面定义文件以及全局样式定义文件

注:?? 定义文件为Xml文件
界面定义文件的根节点为<Theme > </Theme>
例如:
<?xml version="1.0" encoding="gb2312" ?>
<Theme >
<Window
ID="DlgSample_MainWindow"
Rect="200,100,300,600"
Background="Dlg_Background.png"0
WindowBorder="8,25,8,8"
BackColor="#ecf3f6">
</Window>
</Theme>

全局样式定义文件的根节点为<CONTROL_STYLE></CONTROL_STYLE>
例如:

<?xml version="1.0" encoding="gb2312" ?>
<CONTROL_STYLE>
<CheckBoxStyle
TextColorNormal="#333333"
TextColorDisable="#999999"
fontfamily="宋体"
fontsize="12"
CheckImg="GlobalCheckBox.png"
/>
<RadioButtonStyle
TextColorNormal="#225588"
TextColorDisable="#999999"
fontfamily="宋体"
fontsize="12"
RadioImage="GlobalRadioButton.png"
/>
<ComboBoxStyle
BackColor="#FFFFFF"
BorderColorNormal="#aab7c7"
BorderColorDisable="#eeeeee"
BorderColorHilight="#aab7c7"
TextColor="#333333"
ButtonBackColor="#FFFFFF"
ButtonBackHilightColor="#E6E9F0"
/>
<EditStyle
BorderColorNormal="#aab7c7"
BorderColorDisable="#eeeeee"
BorderColorHilight="#FFFFFF"
TextColor="#333333"
BackColor="#FFFFFF"
/>
</CONTROL_STYLE>

  1. [代码部分] 包含GardenUI Library的头文件和lib文件, 把dll放到输出目录

#include “gardenui.h”

  1. 加载全局样式,一般在InitInstance()函数中

例如:
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
CString strFilePath = path;
strFilePath = strFilePath.Left(strFilePath.ReverseFind('\\'));
CString strResourcePath;
strResourcePath.Format("%s\\Skin\\", strFilePath);
// InitGlobalStyle的第一个参数是样式文件的路径,后一个参数是样式文件的名称
InitGlobalStyle(strResourcePath, _T("Meta.xml"));

  1. 定义窗口派生类,普通窗口从CGardenWnd派生, 单文档窗口从CGardenFrameWnd派生,多文档窗口从CGardenMDIFrameWnd派生
  2. 加载窗口的界面定义文件

从CGardenWnd派生出来的普通窗口直接在Create函数调用的时候指定即可,如:
m_pDlgWindow->Create(strResourcePath,_T("DlgSample_Main.xml"),NULL,WS_POPUP|WS_OVERLAPPEDWINDOW|WS_VISIBLE|WS_SYSMENU,NULL);
从CGardenFrameWnd或者从CGardenMDIFrameWnd派生 出来的窗口需要在基类的OnCreate函数调用之前指定界面定义文件,如 :

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
char path[MAX_PATH];
GetModuleFileName(NULL, path, MAX_PATH);
CString strFilePath = path;
strFilePath = strFilePath.Left(strFilePath.ReverseFind('\\'));
CString strResourcePath;
strResourcePath.Format("%s\\Skin\\", strFilePath);
//在基类CGardenMDIFrameWnd的OnCreate函数调用前指定界面定义文件
CreateByFile(strResourcePath,"MDISample_Main.xml");?????????
if (CGardenMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;

return 0;
}
编译,运行即可。
附:一些导出函数的功能说明:
BOOL TrackGardenPopupMenu(CMenu* pMenu, UINT nFlags, int x, int y, CWnd* pWnd, LPRECT rcPopup);
BOOL TrackGardenPopupMenu(HMENU hMenu, UINT nFlags, int x, int y,? HWND hWnd, LPRECT rcPopup);
这两个函数类似于标准的TrackPopupMenu函数,只是弹出的菜单的界面样式设置成为你在样式文件中指定的样式

 

BOOL LoadToolBarResource(UINT nID);
这个函数主要用来加载你的程序中的资源中的Toolbar资源,这些资源将自动用在菜单和工具条上

 

BOOL InitGlobalStyle(LPCTSTR szPath, LPCTSTR szFileName);
这个函数用来加载你指定的全局样式文件

void AttachWndToDockPane(CWnd * pChildWnd, LPCTSTR szDockPaneId, CWnd * pParentWnd);
这个函数的作用是附加一个窗口到父窗口中的一个指定ID的停靠栏中

GardenUI 应用案例
普通窗口应用举例    
单文档窗口应用举例    
多文档窗口应用举例    
钩子窗口应用举例    
全局样式应用举例    
 
 
 
 
 
 
 
 
   
     
COPY RIGHT 2002-2005(C) GARDENUI,INC. ALL RIGHTS RESERVED.