WinApi 폼에 아이콘 적용할려면 Resource를 활용하여야 합니다.
// Resource.h #define ID_BTN_EXIT 5001 #define IDC_APP 5002 |
// Resource.rc #include "Resource.h" IDC_APP ICON "app.ico" |
// main.cpp #include <windows.h> #include "Resource.h" HWND btn_Exit; HINSTANCE g_hInst; LRESULT CALLBACK WinProc (HWND, UINT, WPARAM, LPARAM); int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { HWND hwnd; MSG messages; WNDCLASSEX wcls; char szClassName[10] = "Icon Test"; g_hInst = hThisInstance; wcls.hInstance = hThisInstance; wcls.lpszClassName = szClassName; wcls.lpfnWndProc = WinProc; wcls.style = CS_DBLCLKS; wcls.cbSize = sizeof (WNDCLASSEX); wcls.hIcon = LoadIcon (g_hInst, MAKEINTRESOURCE(IDC_APP )); wcls.hIconSm = LoadIcon (g_hInst, MAKEINTRESOURCE(IDC_APP)); wcls.hCursor = LoadCursor (NULL, IDC_ARROW); wcls.lpszMenuName = NULL; wcls.cbClsExtra = 0; wcls.cbWndExtra = 0; wcls.hbrBackground = (HBRUSH)COLOR_WINDOW; if (!RegisterClassEx (&wcls)) return 0; hwnd = CreateWindow( szClassName, szClassName, WS_OVERLAPPEDWINDOW, 0, 0, 300, 300, NULL, NULL, hThisInstance, NULL); ShowWindow (hwnd, nFunsterStil); while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } LRESULT CALLBACK WinProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: btn_Exit = CreateWindow( "button", "Exit", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 10,10,70,30, hwnd, (HMENU)ID_BTN_EXIT, g_hInst, NULL); break; case WM_COMMAND : switch(LOWORD(wParam)) { case ID_BTN_EXIT : PostQuitMessage(0); return 0; break; default: return 0; } break; case WM_DESTROY: PostQuitMessage (0); break; default: return DefWindowProc (hwnd, message, wParam, lParam); } return 0; } |
**. 컴파일
windres -i Resource.rc -o Resource.o
g++ *.cpp Resource.o -o TestCode.exe -mwindows
컴파일을 쉽게하기 위해서 배치파일을 만듭니다. Makefile을 만들어서 해도 됩니다.
rem cmd_Build.bat windres -i Resource.rc -o Resource.o g++ *.cpp Resource.o -o TestCode.exe -mwindows pause |
'Test Code > C++' 카테고리의 다른 글
Mingw - Split 함수 만들기 (0) | 2013.12.21 |
---|---|
WinAPI - GetTickCount 함수로 sleep 함수 만들기 (0) | 2013.12.21 |
WinAPI - SYSTEMTIME (0) | 2013.12.20 |
MingW - DLL 생성 및 사용 (0) | 2013.12.20 |
MingW - 컴파일 및 옵션 (0) | 2013.12.20 |