Codelite로 Win32 프로그래밍하기
MinGW와 함께 배포되는 Codelite에서도 Win32 API 프로그래밍이 가능하지만, 프로젝트 생성 다이얼로그박스에서 Win32에 대한 항목이 없다. 그래도 MinGW에서 Win32 API 를 지원하고 있기 때문에 옵션 설정으로 간단히 Windows 프로그래밍을 할 수 있다.
- 메뉴에서 Workspace > New Project 를 클릭한다.
- Categories 에서 Console 을 선택하고,
- Simple Executable (g++) 을 선택한다.
- Project Name 을 원하는 이름으로 입력하고, OK 버튼을 클릭한다.
- 그러면 프로젝트가 생성되고, 이제 프로젝트의 옵션을 설정할 차례이다.
- 메뉴에서 Workspace > Open Active Project Settings… 를 클릭한다.
- 새로운 창이 뜨면, Linker를 클릭한다.
- 이제, Options 에 -mwindows 를 입력하거나,
- Libraries 에 user32;kernel32;gdi32 를 입력하고 OK버튼을 누른다.
- 이로써 설정이 완료되었으며, main.cpp 에 다음을 입력하고 빌드/실행해본다.
#include <windows.h> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hInst; LPSTR lpszClass="First"; int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst=hInstance; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=(WNDPROC)WndProc; WndClass.lpszClassName=lpszClass; WndClass.lpszMenuName=NULL; WndClass.style=CS_HREDRAW | CS_VREDRAW; RegisterClass(&WndClass); hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,(HMENU)NULL,hInstance,NULL); ShowWindow(hWnd,nCmdShow); while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { switch(iMessage) { case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }
- 실제 빌드를 해보면 아래와 같이 링크되는 것을 확인할 수 있다.
g++ -o ./Debug/Test01 ./Debug/main.o "-L." -mwindows or g++ -o ./Debug/Test01 ./Debug/main.o "-L." -luser32 -lkernel32 -lgdi32
댓글
댓글 쓰기