기본카테고리

[MFC] 텍스트 파일을 리소스에 추가 하여 불러오는 방법

DevAdd 2008. 3. 11. 14:50




제목 그대로 텍스트 파일을 리소스에 추가하여 읽어오는 방법입니다.

리소스에 텍스트파일을 추가하고 ID는 IDR_TXT1로, 리소스 타입은 TXT로 임의로 정했습니다.

 

TCHAR buff[512] = {0,};
HGLOBAL hGlobal;
HGLOBAL hRes;
LPSTREAM lpStream;
COleStreamFile StreamFile;

//리소스ID와 타입으로 리소스정보를 읽어 옵니다.
HRSRC resInfo = FindResource(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_LICENSE), _T("RTF"));

//리소스정보를 이용하여 리소스를 읽어옵니다.
hRes = LoadResource(AfxGetInstanceHandle(), resInfo);

//메모리에 로드된 리소스를 잠그고 접근할수 있는 포인터를 얻어 옵니다.
LPSTR lpRes = (LPSTR)LockResource(hRes);

//리소스의 전체 크기를 얻습니다.
int Size = SizeofResource(AfxGetInstanceHandle(), resInfo);

//HGLOBAL 타입의 메모리를 할당하여 리소스 데이터를 복사합니다.
hGlobal = ::GlobalAlloc(GMEM_MOVEABLE, Size);
LPVOID pvData = ::GlobalLock(hGlobal);
CopyMemory (pvData, lpRes, Size);
::GlobalUnlock(hGlobal);

//파일과 같이 읽고 쓸수 있도록 스트림 오브젝트를 생성하여 읽어 옵니다.
if(CreateStreamOnHGlobal(hGlobal, FALSE, &lpStream)==S_OK)
{
StreamFile.Attach(lpStream);
StreamFile.Read(buff, Size);
::GlobalFree(hGlobal);
}

m_titleLic.SetText(buff);