2014 개인기록/으으리 리버싱
[02일차] Win32 API 이해
Theo Kim
2014. 6. 16. 01:29
#include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; // 윈도우 이름 및 타이틀바에 등록할 문자열 LPCTSTR lpszClass = TEXT("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; 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, NULL, 0, 0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return (int)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); }오늘은 두번째 수업 시간이다.