使用skinMagic库实现界面换肤

·                     将SkinMagicTrial.lib、SkinMagicTrial.dll和SkinMagicLib.h拷贝到项目根目录下,并在工程中添加;

·                     把Skins文件夹放在项目根目录下;

·                     建立一个MFC单文档项目;

·                     将 #include "SkinMagicLib.h" 拷贝到 StdAfx.h文件中;

·                     在C**App类中打开InitInstance()函数,在函数其开始部分增加

    VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), _T("ReadUI") ,NULL,NULL ) );

    VERIFY( 1 == LoadSkinFile("Skins//corona.smf"));

   

·                     (1)在单文档程序中

·                     在InitInstance()函数最后,但在以下代码之前,

    // The one and only window has been initialized, so show and update it.

    m_pMainWnd->ShowWindow(SW_SHOW);

    m_pMainWnd->UpdateWindow();

    加入如下代码

VERIFY( 1 == SetDialogSkin( _T("Dialog") ) );

    VERIFY( 1 == SetWindowSkin(m_pMainWnd->m_hWnd ,  _T("MainFrame") ) );

(2)在基于对话框的程序中

·                     在InitInstance()函数最后,但在以下代码之前,

    // The one and only window has been initialized, so show and update it.

INT_PTR nResponse = dlg.DoModal();

    加入如下代码

    VERIFY( 1 == SetWindowSkin(m_pMainWnd->m_hWnd ,  _T("MainFrame") ) );

    (3)添加按钮或菜单修改界面皮肤

    添加按钮事件的代码如下:

    char strExt[]= "SkinMagic Files(*.smf)|*.smf||";

CFileDialog dlg( TRUE, "*.smf", "*.smf", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

        strExt,  this );

 

    if (dlg.DoModal() == IDOK)

    {

      LoadSkinFile((char*)(LPCSTR)(dlg.GetPathName()));

    }

    这样通过选定皮肤文件任意修改皮肤。

·                     通过类向导给C**App增加ExitInstance() 函数,内容如下

    ExitSkinMagicLib();

    return CWinApp::ExitInstance();

    编译程序;即可运行成功。

你可能感兴趣的:(使用skinMagic库实现界面换肤)