⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dynres.cpp

📁 minica2的第2个版本
💻 CPP
字号:
// Res1.cpp: implementation of the CRes class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DynRes.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CRes::CRes()
{
	hExe = NULL;
	hRes = NULL;
	hResLoad = NULL;
	lpResLock = NULL;
}

CRes::CRes(HMODULE Exe)
{
	hExe = Exe;
	hRes = NULL;
	hResLoad = NULL;
	lpResLock = NULL;
}

CRes::~CRes()
{
	FreeIt();
}

BOOL CRes::LoadExe()
{
	FreeIt();
	hExe = LoadLibrary(m_Path ); 
 
	if (hExe == NULL) 
		return FALSE;
	return TRUE;
}

void CRes::FreeIt()
{
	if ( hExe)
		::FreeLibrary ((HMODULE)hExe);
	hExe=NULL;
}



BOOL CRes::FindResource(int res,LPSTR type)
{
	if ( hExe)
		hRes = ::FindResource((HMODULE)hExe, MAKEINTRESOURCE(res), type); 
	else
		return FALSE;
 	if (hRes == NULL) 
		return FALSE;
	return TRUE;
}

BOOL CRes::LoadResource()
{
	if ( hExe)
		if ( hRes)
			hResLoad =(HRSRC):: LoadResource((HMODULE)hExe,hRes); 
	else
		return FALSE;
 
	if (hResLoad == NULL)
		return FALSE;
	return TRUE;
}

BOOL CRes::EnumTypesFunc(HANDLE hModule, LPSTR lpType, LONG lParam)
{
      EnumResourceNames((HINSTANCE)hModule, 
        lpType, 
        (ENUMRESNAMEPROC)EnumNames, 
        lParam); 
 
    return TRUE; 
}

BOOL CRes::EnumNames(HANDLE hModule, LPCTSTR lpType, LPTSTR lpName, LONG lParam)
{
	CArray<__ResInfo,__ResInfo&> *infos =(	CArray<__ResInfo,__ResInfo&> *)lParam;
	__ResInfo info;
	
	
    if ((ULONG)lpName & 0xFFFF0000) 
    { 
		info.m_Name = lpName;
    } 
    else 
    { 
		info.m_Name .Format ("%u",(USHORT)lpName);
    } 
	if ((ULONG)lpType & 0xFFFF0000) 
    { 
       info.m_Type = lpType; 
	   info.Type_Type =1;
    } 
    else 
    { 
		info.Type_Type =0;
		info.m_Type .Format ("%u",(USHORT)lpType);
	} 
 
	if (infos)
		infos->Add (info);
    
    return TRUE; 
}

BOOL CRes::LoadAllResource()
{
  if ( hExe)
 {
	return EnumResourceTypes((HMODULE)hExe,              // module handle 
    (ENUMRESTYPEPROC)EnumTypesFunc,  // callback function 
    (LONG)&m_Infos);                              // extra parameter 
	
  }
  return FALSE;
}

HRSRC CRes::GetLoadedRes()
{
	return hResLoad;
}

LPSTR CRes::LockRes()
{
	lpResLock =(char*)::LockResource(hResLoad);
	return lpResLock;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -