终极工具箱文档

终极工具箱是一个强大的库,它提供了多种皮肤框架,允许开发者为他们的应用程序添加美观且一致的用户界面。本文将介绍如何在应用程序中实现这些皮肤,并动态地在运行时更换它们。

设置应用程序的皮肤

要在应用程序中设置皮肤,首先需要从COXSkinnedApp派生应用程序类,而不是从CWinApp派生。同时,不要忘记包含OXSkins.h头文件。

对于多文档界面(MDI)应用程序,主框架窗口应该从COXMenuBarFrame派生;对于单文档界面(SDI)应用程序,则从COXMenuBarFrame派生。

在主框架类的构造函数中,调用COXMenuBarFrame<…>的构造函数,并传递CBRS_ALIGN_ANY作为第一个参数,RUNTIME_CLASS(COXSizableMiniDockFrameWnd)作为第二个参数。

工具栏应该从COXCoolToolBar派生或实例化,而不是从CToolBar

在主框架类中添加一个COXBitmapMenuOrganizer实例。在主框架窗口的WM_CREATE处理程序中调用COXBitmapMenuOrganizer::AttachFrameWnd(…),然后调用COXBitmapMenuOrganizer::AutoSetMenuImage(…)

在主框架类中添加一个COXTabClientWnd实例,这将启用MDI标签。在主框架窗口的WM_CREATE处理程序中调用COXTabClientWnd::Attach(...)

视图类应该从COXSkinnedView派生,其中PARENT是之前派生的视图类的名称。

在应用程序类InitInstance的最开始调用SetCurrentSkin(_T(""))。可以选择"Classic"、"Office XP"和"Office 2003"中的皮肤。可以随时再次调用这个方法,以允许用户在皮肤之间切换。

示例代码

// 步骤 1 - 从 COXSkinnedApp 派生应用程序类 class CSkinsDemoApp : public COXSkinnedApp { public: CSkinsDemoApp(); ... // 步骤 2 - 从 COXMenuBarFrame 派生主框架窗口 class CMainFrame : public COXMenuBarFrame { DECLARE_DYNAMIC(CMainFrame) public: CMainFrame(); ... // 步骤 3 - 调用 COXMenuBarFrame 的构造函数 // 并传递 CBRS_ALIGN_ANY 作为第一个参数 // 传递 RUNTIME_CLASS(COXSizableMiniDockFrameWnd) 作为第二个参数 CMainFrame::CMainFrame() : COXMenuBarFrame(CBRS_ALIGN_ANY, RUNTIME_CLASS(COXSizableMiniDockFrameWnd)) { ... // 步骤 4 - 从 COXCoolToolBar 派生或实例化工具栏 COXCoolToolBar m_wndToolBar; COXCoolToolBar m_wndToolBar2; // 步骤 5 - 在主框架类中添加 COXBitmapMenuOrganizer 实例 // 这将允许菜单显示位图 COXBitmapMenuOrganizer m_BMO; // 步骤 5 (续) - 调用 COXBitmapMenuOrganizer::AttachFrameWnd(...) m_BMO.AttachFrameWnd(this); m_BMO.AutoSetMenuImage(); // (将此代码放置在 CMainFrame 类的 OnCreate 处理程序中) // 步骤 6 - 在主框架类中添加 COXTabClientWnd 实例 // 这将启用 MDI 标签 COXTabClientWnd m_MTIClientWnd; // 步骤 6 (续) - 在主框架类的 OnCreate() 中调用 COXTabClientWnd::Attach(...) m_MTIClientWnd.Attach(this); // 步骤 7 - 从 COXStatusBar 派生或实例化状态栏 COXStatusBar m_wndStatusBar; // 步骤 8: 从 COXSkinnedView<...> 派生视图类 #define BASEVIEW CView class CSkinsDemoView : public COXSkinnedView { protected: // 仅通过序列化创建 };
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485