天天看點

MFC中資源對話框的切換類

源代碼.cpp

#include "SwitchResource.h"
    
    extern HINSTANCE g_hDllResInstance;
    
    CSwitchResource::CSwitchResource()
    {
    	m_hSaveResInstance = AfxGetResourceHandle();
    	AfxSetResourceHandle(g_hDllResInstance);
    }
    CSwitchResource::~CSwitchResource(void)
    {
    	AfxSetResourceHandle(m_hSaveResInstance);
    }
    
    HINSTANCE CSwitchResource::GetDllResourceIns()
    {
    	return g_hDllResInstance;
    }
           

頭檔案.h

#pragma once
// 使用說明:
// 需要在dll的入口處添加g_hDllResInstance的定義,形如在DllMain中添加
//	HINSTANCE g_hDllResInstance = NULL;
//	DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
//	{
//		g_hDllResInstance = hInstance;
//		...
//	}

class CSwitchResource
{
public:
	CSwitchResource();
	virtual ~CSwitchResource(void);
	static HINSTANCE GetDllResourceIns();
private:
	HINSTANCE m_hSaveResInstance;
};
           

使用執行個體:在winapp的單執行個體初始化函數加入資源定義

// 唯一的一個 CTestWinApptheApp對象
CTestWinApptheApp;
// CTestWinApptheApp初始化
HINSTANCE g_hDllResInstance = NULL;
BOOL CTestWinApptheApp::InitInstance()
{
	CWinApp::InitInstance();

	g_hDllResInstance = theApp.m_hInstance;

	return TRUE;
}