关于MFC程序的换肤问题

        今天上午试了试MFC程序的换肤,上网找了个换肤的库——SkinMagic Toolkit。看了一下示例程序,感觉换肤就是这么几步:
       1 将SkinMagicTrial.lib、SkinMagicLib.h拷贝到项目目录下,将SkinMagicTrial.dll拷贝到项目的debug目录下。
       2 在项目的连接器设置中添加SkinMagicTrial.lib文件
       3 在StdAfx.h中包含SkinMagicLib.h头文件
       4 在InitInstance()中添加InitSkinMagicLib()、LoadSkinFile()、SetWindowSkin()、SetDialogSkin()函数
BOOL CSkinTestApp::InitInstance()
{
    AfxEnableControlContainer();

    
// Standard initialization
    
// If you are not using these features and wish to reduce the size
    
//  of your final executable, you should remove from the following
    
//  the specific initialization routines you do not need.
    VERIFY( 1 == InitSkinMagicLib( AfxGetInstanceHandle(), "Demo" , 
                      NULL,
                      NULL ) );

    VERIFY( 
1 == LoadSkinFile("xpgrean.smf") ); 

#ifdef _AFXDLL
    Enable3dControls();            
// Call this when using MFC in a shared DLL
#else
    Enable3dControlsStatic();    
// Call this when linking to MFC statically
#endif

    
// Change the registry key under which our settings are stored.
    
// TODO: You should modify this string to be something appropriate
    
// such as the name of your company or organization.
    SetRegistryKey(_T("Local AppWizard-Generated Applications"));

    LoadStdProfileSettings();  
// Load standard INI file options (including MRU)

    
// Register the application's document templates.  Document templates
    
//  serve as the connection between documents, frame windows and views.

    CSingleDocTemplate
* pDocTemplate;
    pDocTemplate 
= new CSingleDocTemplate(
        IDR_MAINFRAME,
        RUNTIME_CLASS(CSkinTestDoc),
        RUNTIME_CLASS(CMainFrame),       
// main SDI frame window
        RUNTIME_CLASS(CSkinTestView));
    AddDocTemplate(pDocTemplate);

    
// Parse command line for standard shell commands, DDE, file open
    CCommandLineInfo cmdInfo;
    ParseCommandLine(cmdInfo);

    
// Dispatch commands specified on the command line
    if (!ProcessShellCommand(cmdInfo))
        
return FALSE;

    VERIFY( 
1 == SetWindowSkin( m_pMainWnd->m_hWnd , "MainFrame" ));
    VERIFY( 
1 == SetDialogSkin( "Dialog" ) );
    ((CMainFrame
*)m_pMainWnd)->m_bSkinned = TRUE;
    ((CMainFrame
*)m_pMainWnd)->m_nIndex = 0;
    
// The one and only window has been initialized, so show and update it.
    m_pMainWnd->ShowWindow(SW_SHOW);
    m_pMainWnd
->UpdateWindow();

    
return TRUE;
}

        5 然后在CMainFrame中添加两个成员变量:
public :
    
int  m_nIndex;
    BOOL m_bSkinned;
       
        编译程序,就可以实现换肤了。但这个库有个问题就是需要注册,否则在程序运行前会弹出一个对话框提示注册,并且它的设计其职能使用15天。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值