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

📄 memfileex.cpp

📁 visual c++ 实例编程
💻 CPP
字号:
/*  This file was written by Amir Israeli , July 2000   Email: israelaq@walla.co.il  
No warranty of any kind . Dont remove this header . Thanks.
*/
// MemFileEx.cpp : implementation file
//

#include "stdafx.h"
#include "MemFileEx.h"

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

/////////////////////////////////////////////////////////////////////////////
// CMemFileEx

CMemFileEx::CMemFileEx()
{
	cbSize = 0;
}

CMemFileEx::~CMemFileEx()
{
}


/////////////////////////////////////////////////////////////////////////////
// CMemFileEx member functions

BOOL CMemFileEx::LoadResource( LPCTSTR lpszName, LPCTSTR lpszType)
{
	//already contains a buffer in use 
	//(you can Detach it and free the buffer ...
	ASSERT(m_lpBuffer==NULL);//must be null

	HINSTANCE hInst = AfxGetResourceHandle(); 
	HRSRC hRsrc = ::FindResource( hInst, lpszName, lpszType);
	if (!hRsrc)  return FALSE;
	cbSize = ::SizeofResource(hInst, hRsrc); 
	LPBYTE lpRsrc = (LPBYTE) ::LoadResource( hInst, hRsrc); 
	Attach( lpRsrc, cbSize, 0);
	return TRUE;
}

//Functions such as LoadResource DONT return HGLOBAL but
//generic handle (they are defined as HGLOBAL for Win32 compatability 
//reasons only
BOOL CMemFileEx::CopyResourceToHGLOBAL( HGLOBAL *phGlobal, DWORD *pdwSize)
{
	*phGlobal = NULL; *pdwSize = 0; //initializing
	DWORD cbSize = GetFileSize();

	//if not contains a buffer or data length is 0 return FALSE 
	if ((!m_lpBuffer) || (!cbSize))
		return FALSE;

	*pdwSize = cbSize; //setting data size

	HGLOBAL hGlobal = ::GlobalAlloc( GHND, cbSize);
	if (!hGlobal)
		return FALSE;

	LPVOID lpData = ::GlobalLock(hGlobal);
	::CopyMemory( lpData, (LPVOID)m_lpBuffer, cbSize);

	::GlobalUnlock(hGlobal);
	*phGlobal = hGlobal;
	return TRUE;
}







⌨️ 快捷键说明

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