源代码.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;
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐