终极工具箱应用程序皮肤





5.00/5 (16投票s)
终极工具箱支持 Office XP、Office 2003 和经典应用程序皮肤。
访问 终极工具箱主页,以获取概述和配置指南,了解终极工具箱库。
此示例的源代码和项目文件可以在下载的示例项目的 samples\advanced\SkinsDemo 目录中找到。
概述
皮肤演示演示了终极工具箱库中可用的皮肤框架。您可以选择 Office 2003、Office XP 和经典皮肤,并且还可以在应用程序运行时动态更改皮肤。
为您的应用程序设置皮肤
- 将您的应用程序类从
CWinApp
派生到COXSkinnedApp
。不要忘记包含 OXSkins.h。 - 对于 MDI 应用程序,将您的主框架窗口从
CMDIFrameWnd
派生到COXMenuBarFrame<CMDIFrameWnd, COXSizeDockBar>
。对于 SDI 应用程序,将您的主框架窗口从CFrameWnd
派生到COXMenuBarFrame<CFrameWnd, COXSizeDockBar>
。 - 在您的主框架类的构造函数中调用
COXMenuBarFrame<…>
的构造函数,并将CBRS_ALIGN_ANY
作为第一个参数,将RUNTIME_CLASS(COXSizableMiniDockFrameWnd)
作为第二个参数传递。 - 将您的工具栏从
CToolBar
派生或实例化到COXCoolToolBar
。 - 将
COXBitmapMenuOrganizer
的实例添加到您的主框架类。在您的主框架窗口的WM_CREATE
处理程序中调用COXBitmapMenuOrganizer::AttachFrameWnd(…)
,然后调用COXBitmapMenuOrganizer:: AutoSetMenuImage(…)
。 - 将
COXTabClientWnd
的实例添加到您的主框架类。这将启用 MDI 选项卡。在您的主框架窗口的WM_CREATE
处理程序中调用COXTabClientWnd::Attach(...)
。 - 将您的状态栏从
CStatusBar
派生或实例化到COXStatusBar
。 - 将您的视图类从
COXSkinedView<PARENT>
派生,其中PARENT
是您的视图先前派生的类。
在您的应用程序类的 InitInstance
的最开始处调用 SetCurrentSkin(_T("<skin name here>"))
。选择“Classic”、“Office XP”和“Office 2003”皮肤。您可以随时再次调用此方法,以允许用户在皮肤之间切换。
如果您在按照这些步骤时遇到问题,只需打开 SkinsDemo 项目并进行文本搜索“STEP”。您将在需要修改代码的所有位置找到特定的注释。
以下是相关的代码,它更详细地展示了这些操作。
// STEP 1 - Derive your application class from COXSkinnedApp insted of
// CWinApp.
class CSkinsDemoApp : public COXSkinnedApp
{
public:
CSkinsDemoApp();
...
// STEP 2 - Derive you main frame window from COXMenuBarFrame<cmdiframewnd, />.
class CMainFrame : public COXMenuBarFrame<cmdiframewnd, />
{
DECLARE_DYNAMIC(CMainFrame)
public:
CMainFrame();
...
// STEP 3 - Call the constructor of COXMenuBarFrame<cmdiframewnd, /> and
// pass CBRS_ALIGN_ANY for the first parameter and
// RUNTIME_CLASS(COXSizableMiniDockFrameWnd) for the second parameter
CMainFrame::CMainFrame() :
COXMenuBarFrame<cmdiframewnd,coxsizedockbar />(CBRS_ALIGN_ANY,
RUNTIME_CLASS(COXSizableMiniDockFrameWnd))
{ ...
// STEP 4 - Derive or instantiate your toolbars from COXCoolToolBar instead
// of CToolBar.
COXCoolToolBar m_wndToolBar;
COXCoolToolBar m_wndToolBar2;
// STEP 5 - Add an instance of COXBitmapMenuOrganizer to your main frame
// class. This will enable your menus to show bitmaps.
COXBitmapMenuOrganizer m_BMO;
// STEP 5 (Cont'd) - Call COXBitmapMenuOrganizer::AttachFrameWnd(...) and then
// COXBitmapMenuOrganizer::AttachFrameWnd(...)
m_BMO.AttachFrameWnd(this);
m_BMO.AutoSetMenuImage(); // (place this code in the OnCreate handler
// of your CMainFrame class)
// STEP 6 - Add an instance of COXTabClientWnd to your main frame class.
// This will enable the MDI tabs.
COXTabClientWnd m_MTIClientWnd;
// STEP 6 (Cont'd) - Call COXTabClientWnd::Attach(...) in the OnCreate() of
// the main frame class
m_MTIClientWnd.Attach(this);
// STEP 7 - Derive or instantiate your status bar from COXStatusBar instead
// of CStatusBar.
COXStatusBar m_wndStatusBar;
// STEP 8: Derive your view class from COXSkinnedView<...>
#define BASEVIEW CView
class CSkinsDemoView : public COXSkinnedView<baseview />
{
protected: // create from serialization only
历史
首次 CodeProject 发布于 2007 年 8 月。