2013-04-01 2 views
0

나는 minGW와 이클립스를 사용한다. 질환자가 는 어떻게 EXE 파일에이 질환자를 구축 할 수있는 .EXE 같은 폴더에 있어야합니다 이런 식으로 그래서winapi C++ HICON

case WM_CREATE: 
{ 
... 
hIcon = (HICON)LoadImage(NULL, "icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE); 
if(hIcon) { SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)hIcon); } 
else { MessageBoxW(hwnd, "ico not found", "ico not found", MB_OK | MB_ICONERROR); } 
... 
} 

: 는 그리고 나는이 방법으로 HICON을했다?

+0

리소스 파일이 가장 쉽습니다. – chris

+0

예.이 줄을 내 .rc 파일에 입력합니다. 1 ICON "icon.ico"하지만 HICON과 동일하지는 않으며 HICON "icon.ico"를 사용하면 아무 일도 발생하지 않습니다. –

+0

* 아이콘 *을 리소스 스크립트에서 'ICON'지시어를 사용하여 리소스로 실행 가능하도록 만든 다음 LoadImage를 사용하여 아이콘을로드하고 그것에 HICON을 얻습니다. –

답변

3

사용 .rc 파일이 실행 파일의 리소스에 질환자 파일을 추가 할 수 있습니다. 그런 다음 LoadImage()을 호출 할 때 LR_LOADFROMFILE 플래그를 없애고 파일 이름 대신 lpszName 매개 변수에 리소스 ID를 지정하십시오. 예 :

MY_ICON ICON "icon.ico" 

.

case WM_CREATE: 
{ 
... 
hIcon = (HICON) LoadImage(GetModuleHandle(NULL), "MY_ICON", IMAGE_ICON, 32, 32, 0); 
... 
} 
+0

아이디어 감사합니다. :-) –

+1

유니 코드로 컴파일 할 때'TEXT ("MY_ICON")'을 사용하여 작업하도록하십시오. 또한 올바른 HINSTANCE를 사용하고 있는지 확인하십시오. GetModuleHandle은 모든 것이 동일한 실행 파일에 있으면 제대로 작동하지만로드 코드가 DLL에 있고 아이콘이 EXE의 리소스에 있거나 그 반대의 경우에는 HINSTANCE를 더 신중하게 선택해야합니다. –