'2014 개인기록/으으리 리버싱'에 해당되는 글 2건
[02일차] Win32 API 이해[02일차] Win32 API 이해
Posted at 2014. 6. 16. 01:29 | Posted in 2014 개인기록/으으리 리버싱
#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); }오늘은 두번째 수업 시간이다.
'2014 개인기록 > 으으리 리버싱' 카테고리의 다른 글
[02일차] Win32 API 프로그램 종료 (0) | 2014.06.15 |
---|
[02일차] Win32 API 프로그램 종료[02일차] Win32 API 프로그램 종료
Posted at 2014. 6. 15. 20:10 | Posted in 2014 개인기록/으으리 리버싱#include <stdio.h> #include <windows.h> int main(void) { HWND hWnd = FindWindow(NULL, "계산기"); if(hWnd) SendMessage(hWnd, WM_CLOSE, 0, 0); return 0; }
오늘 Win32 API 수업 시간에 배운 내용이다. 계산기 프로세스를 찾아 종료 시그널을 보내는 프로그램이다. 실습을 하면서 WM_DESTROY 시그널을 보내도 종료가 되지 않아 너무 이상했다. 집에 와서 테스트해보니 WM_CLOSE 시그널을 만나야 종료가 된다. 생각해보면 WM_DESTROY 시그널을 만나도 죽을 것 같지만 실제로는 WM_CLOSE 시그널을 만나야 한다.
'2014 개인기록 > 으으리 리버싱' 카테고리의 다른 글
[02일차] Win32 API 이해 (0) | 2014.06.16 |
---|