728x90
    
    
  반응형
    
    
    
  | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | #include <windows.h> //콜백함수 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam); LRESULT OnCommand(HWND hWnd, WPARAM wParam, LPARAM lParam); LRESULT OnPaint(HWND hWnd, WPARAM wParam, LPARAM lParam); LRESULT OnDestroy(HWND hWnd, WPARAM wParam, LPARAM lParam); LRESULT OnSize(HWND hWnd, WPARAM wParam, LPARAM lParam); HINSTANCE g_hInst; PAINTSTRUCT ps; HDC hdc; typedef struct MESSAGEMAP{     UINT iMessage;     LRESULT(*lpfnMsgProc)(HWND, WPARAM, LPARAM); }MESSAGEMAP; 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 = L"Reversing #2";     WndClass.lpszMenuName = NULL;     WndClass.style = CS_HREDRAW | CS_VREDRAW;     RegisterClass(&WndClass);     hWnd = CreateWindow(L"Reversing #2", L"Reversing #2", WS_OVERLAPPEDWINDOW,         70, 70, 490, 510,         NULL, (HMENU)NULL, hInstance, NULL);     ShowWindow(hWnd, nCmdShow);     //메시지 루프     while (GetMessage(&Message, NULL, 0, 0)) {         TranslateMessage(&Message);         DispatchMessage(&Message);     }     return Message.wParam; } //운영체제가 호출하는 CALLBACK함수 (메시지 처리) LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam){     int i;     static MESSAGEMAP MessageMaps[] = {    //콜백 함수 정리         { WM_CREATE, OnCreate },         { WM_COMMAND, OnCommand },         { WM_PAINT, OnPaint },         { WM_DESTROY, OnDestroy },         { WM_SIZE, OnSize },     };     for (i = 0; i < sizeof(MessageMaps) / sizeof(MessageMaps[0]); ++i){         if (MessageMaps[i].iMessage == iMessage){             return (*MessageMaps[i].lpfnMsgProc)(hWnd, wParam, lParam);         }     }     return(DefWindowProc(hWnd, iMessage, wParam, lParam)); } LRESULT OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam){     return 0; } LRESULT OnSize(HWND hWnd, WPARAM wParam, LPARAM lParam){     return 0; } LRESULT OnCommand(HWND hWnd, WPARAM wParam, LPARAM lParam){     switch (LOWORD(wParam)){     }     return 0; } LRESULT OnPaint(HWND hWnd, WPARAM wParam, LPARAM lParam){     hdc = BeginPaint(hWnd, &ps);     EndPaint(hWnd, &ps);     return 0; } LRESULT OnDestroy(HWND hWnd, WPARAM wParam, LPARAM lParam){     PostQuitMessage(0);     return 0; } | cs | 
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | \
                             WS_CAPTION        | \
                             WS_SYSMENU        | \
                             WS_THICKFRAME     | \
                             WS_MINIMIZEBOX    | \
                             WS_MAXIMIZEBOX)| 1 2 3 4 5 6 7 8 9 10 11 | 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)); } | cs | 
출처 : soen.kr 외 다수
728x90
    
    
  반응형
    
    
    
  '프로그래밍 > Windows' 카테고리의 다른 글
| 아스키코드 -> 유니코드 문자열 변환 함수 (0) | 2015.06.03 | 
|---|---|
| WinAPI 콤보박스 생성 / ComboBox (0) | 2015.06.01 | 
| process list 출력 (2) | 2015.05.20 | 
| how to create ListView on Visual C++ (0) | 2015.05.20 | 
| 사용자 입력 글자수 제한하기 (0) | 2014.07.04 | 
| 쓰레드 동기화와 WAIT_ABANDONED (7) | 2014.06.02 | 
| GetExitCodeProcess (0) | 2014.05.25 | 
| (싱글 더블 와이드) 함수 정리 (0) | 2014.05.25 | 
| IPC MailSlot 메일 슬롯 (0) | 2014.05.25 | 
| tchar.h (1) | 2014.05.13 | 
댓글