가급적 모든 리소스는 리소스에 넘기는 것이 좋습니다.
특히 스트링 부분.
다국적 형태로 만들려다 보면 여러가지 애로 사항이 많습니다.
하드 코딩을 통해 내부적으로 각종 String을 양산하게 되는데,
나중에 다국적 코드로 만들려면... 생각만 해도 아찔합니다.

이를 해결 하는 방법은 Resource를 따로 빼내어 처리하는 방법입니다.

다음과 같은 것들을 고려해서 작성하게 되면 수월하게 작성할 수 있습니다.

Main Module Handle을 가져 옵니다.
EXE 같은 경우에는 GetModule 을 통해 가져오면 됩니다. 매개 변수에는 파일이름을 넣으시면 되구요.
DLL 같은 경우에는 DLLMain 부분에서 얻으시면 됩니다.
DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)

여기서 얻은 핸들을 저장하는 방법인데, 여러가지 방법이 있겠지만, 저 같은 경우에는
전역 변수를 통해 넣었습니다.
특히 stdafx.h 와 stdafx.cpp 에다 넣었는데,
stdafx.h에는 extern HANDLE g_hModuleHandle; 을 넣고
stdafx.cpp 에는 HANDLE g_hModuleHandle; 을 써서 넣었습니다.

여기서 주의하실 것은 여러개의 모듈이 난무하는(다양한 DLL을 참조해서 쓰는)경우에는
가급적 Unique한 이름으로 만들어야 합니다.
저 같은 경우에는 XXXX.DLL 인 경우 g_hXXXXModule 이라고 이름을 지어버렸죠.


728x90

+ Recent posts