MFC對話方塊使用SkinMagic介面庫
阿新 • • 發佈:2018-12-21
簡介:
使用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或者其它標頭檔案中加入標頭檔案和庫的引用。
3)CxxxApp::InitInstance()中加入初始化SkinMagic庫的程式碼和調入面板檔案。放在呼叫DoModal上面位置即可。#pragma comment(lib,"SkinMagic.lib")//呼叫面板lib #include "SkinMagicLib.h"
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 對話方塊右鍵屬性,常規中選擇選單。