1. 程式人生 > >MFC對話方塊使用SkinMagic介面庫

MFC對話方塊使用SkinMagic介面庫

簡介:   使用MFC做介面是非常痛苦的,最好藉助第三方介面庫。本文使用SkinMagic,下載地址: http://pan.baidu.com/share/link?shareid=1666255608&uk=3794066601

1.使用方法

  1)首先拷貝SkinMagicLib.h,SkinMagic.lib,corona.smf(字尾名為smf)到工程檔案下,其中SkinMagic.dll拷到Debug下。

  2)stdafx.h或者其它標頭檔案中加入標頭檔案和庫的引用。

   #pragma comment(lib,"SkinMagic.lib")//呼叫面板lib
   #include "SkinMagicLib.h"
 3)CxxxApp::InitInstance()中加入初始化SkinMagic庫的程式碼和調入面板檔案。放在呼叫DoModal上面位置即可。
   VERIFY( 1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL));
   VERIFY( 1 == LoadSkinFile("corona.smf")); //corona.smf是其中一個介面檔案,使用不同的需要拷貝到工程檔案下。

 4)如果是對話方塊工程,而且沒有選單,直接在CxxxApp::InitInstance()中呼叫

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

 5)重寫ExitInstance()函式,釋放SkinMagic資源。

int CTcpAsynSApp::ExitInstance() 
{
	// TODO: Add your specialized code here and/or call the base class
	ExitSkinMagicLib();
	return CWinApp::ExitInstance();
}

2.注意事項

  1)如果對話方塊工程有選單,則在OnInitDialog呼叫下面函式。將CTcpAsynSDlg替換成你們自己的名稱。

  注意: 如果有選單,須在CxxDlg::OnitDialog呼叫如下函式。其中CMenu::FromHandle(GetSkinMenu(g_pMianWnd->m_hWnd));是載入選單。

   CTcpAsynSDlg* g_pMianWnd = (CTcpAsynSDlg*)AfxGetApp()->GetMainWnd();
   VERIFY( 1 == SetWindowSkin( g_pMianWnd->m_hWnd , "Dialog" ));
   VERIFY( 1 == SetDialogSkin( "Dialog"));  //其它對話方塊使用
   CMenu::FromHandle(GetSkinMenu(g_pMianWnd->m_hWnd));
   //MenuInit();
  也可以使用自定義的MenuInit函式

void CTcpAsynSDlg::MenuInit()
{
	CMenu menu;
	menu.LoadMenu(IDR_MENU1);
	SetMenu(&menu);
}

2)如果工程是文件類,則在CxxxApp::InitInstance()新增

   m_pMainWnd->ShowWindow(SW_SHOW);
   m_pMainWnd->UpdateWindow();
   VERIFY( 1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
   VERIFY( 1 == SetDialogSkin( "Dialog" ) );

3)在對話方塊屬性中要關聯IDR_MENU1 對話方塊右鍵屬性,常規中選擇選單。

3.結果演示