|
오정훈 님이 쓰신 글 :
: freeman 님이 쓰신 글 :
: : 안녕하세요 ....
: :
: : wave(*.wav) 파일과 이미지화일을
: : 리소스 dll로 만드는 방법을 몰라서요.
: : 여러 고수님께 부탁 드립니다.
: :
: : 그럼 안녕히 계세요.
: :
: :
:
: 저도전에 필요해서 찾은것입니다.
: 조금 수정을 했으니 참고하시면 될것입니다.
:
: * DLL 화일로부터 리소스를 메모리에 적제하는 법
:
: 0. var Instace: THandle;
:
: 1. Instance := LoadLibray('화일이름.DLL')
: 2. if Instance = 0 then
: raise Exception.Create('화일이름.DLL을 찾을 수 없습니다.');
:
: * DLL 화일안의 Bitmap 가져와 Image1에 그려주기
:
: 1. Image1.Picture.Bitmap.LoadFromResourceName(Instance, '리소스 명');
:
: * DLL 화일안의 Wave 화일 가져와 연주하기
:
: 0. var hResource: HGLOBAL;
: pszSound: LPCSTR;
: 1. hResource := LoadResource(Instance,
: FindResource(Instance, '리소스 이름', '리소스 식별명'));
: 2. pszSound := LockResource(hResource);
: 3. PlaySound(pszSound, Handle, SND_MEMORY);
: 4. FreeResource(hResource);
:
: * 메모리로부터 DLL 리소스 해제하는 법
:
: 1. FreeLibrary(Instance);
:
제가 같이 있는지 알았는데 내용이 없었네여...
이미지만 예로 들겠습니다.
만드는 방법은여 우선은 메모장에
ID_BACK RCDATA ".\res\Back.jpg"
--------------------------------
아이디 타입 경로
만약 비트맵타입이면
ID_aaa BITMAP ".\res\아미지파일명.bmp"
이런식으로 내용을 넣습니다.
그리고 나서 확장자를 .rc로 만들고
프로젝트를 DLL로 만듭니다 그리고 나서 rc 파일을 추가를 하고 컴파일을 하면
리소스 DLL 이 만들어 집니다.
블러오는 방식은 RCDATA은
TJPEGImage* JpgImg;
JpgImg = new TJPEGImage();
TResourceStream *ResStream;
HINSTANCE ImageDllInstance;
ImageDllInstance = LoadLibrary("파일명.dll"); //DLL에서 이미지들을 가지고 온다.
try
{
ResStream = new TResourceStream( (int)ImageDllInstance, "ID_BACK", RT_RCDATA );
JpgImg->LoadFromStream( dynamic_cast<TStream*>( ResStream ) );
BooJuckImg->Canvas->Draw(0,0,JpgImg);
}
__finally
{
delete JpgImg;
delete ResStream;
}
웨이브도 타입이 있을것입니다.
아니면 RCDATA로 하셔서 읽을때 처리를 하시는 것도 괜찮을것 같습니다.
하도 예전에 했던거라 찾기가....
그럼 즐플이여...
|