// Mouse Moving Program //***(1)Çì´õ ÆÄÀÏ #include //#include "stdafx.h" // VS 2015¿¡¼­´Â ÁÖ¼® ó¸® LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //***(2)¸ÞÀÎ ÇÔ¼ö int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS WndClass; //À©µµ¿ì Ŭ·¡½º ±¸Á¶Ã¼ HWND hwnd; //À©µµ¿ì ÇÚµé MSG msg; //¸Þ½ÃÁö ±¸Á¶Ã¼ //***(3)À©µµ¿ì Ŭ·¡½º ÃʱâÈ­¿Í µî·Ï WndClass.style = CS_HREDRAW | CS_VREDRAW; //Ŭ·¡½º ½ºÅ¸ÀÏ WndClass.lpfnWndProc = WndProc; //À©µµ¿ì ÇÁ·Î½ÃÀú WndClass.cbClsExtra = 0; //À©µµ¿ì Ŭ·¡½º µ¥ÀÌÅÍ ¿µ¿ª WndClass.cbWndExtra = 0; //À©µµ¿ìÀÇ µ¥ÀÌÅÍ ¿µ¿ª WndClass.hInstance = hInstance; //ÀνºÅϽº ÇÚµé WndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); //¾ÆÀÌÄÜ ÇÚµé WndClass.hCursor = LoadCursor(NULL, IDC_ARROW); //Ä¿¼­ ÇÚµé WndClass.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH); //¹è°æ ºê·¯½Ã ÇÚµé(¹àÀº ȸ»ö¹è°æ) WndClass.lpszMenuName = NULL; //¸Þ´º À̸§ WndClass.lpszClassName = TEXT("MClass"); //À©µµ¿ì Ŭ·¡½º À̸§ if (!RegisterClass(&WndClass)) //À©µµ¿ì Ŭ·¡½º register return 1; //***(4)À©µµ¿ì »ý¼º hwnd = CreateWindow( //À©µµ¿ì »ý¼º API ÇÔ¼ö TEXT("MClass"), //µî·ÏµÈ À©µµ¿ì Ŭ·¡½º À̸§ TEXT("¸¶¿ì½º·Î ±×¸²±×¸®±â"), //ŸÀÌƲ¹Ù¿¡ Ãâ·ÂµÉ ¹®ÀÚ WS_OVERLAPPEDWINDOW, //À©µµ¿ì ½ºÅ¸ÀÏ CW_USEDEFAULT, //À©µµ¿ìÁÂÃø»ó´ÜÀÇ xÁÂÇ¥ CW_USEDEFAULT, //À©µµ¿ìÁÂÃø»ó´ÜÀÇ yÁÂÇ¥ CW_USEDEFAULT, //À©µµ¿ìÀÇ ³Êºñ CW_USEDEFAULT, //À©µµ¿ìÀÇ ³ôÀÌ NULL, //ºÎ¸ðÀ©µµ¿ìÀÇ ÇÚµé NULL, //¸Þ´º ¶Ç´Â ÀÚ½Ä À©µµ¿ìÀÇ ÇÚµé hInstance, //¾îÇø®ÄÉÀÌ¼Ç ÀνºÅϽº ÇÚµé NULL //À©µµ¿ì »ý¼º µ¥ÀÌÅÍ ÁÖ¼Ò ); ShowWindow(hwnd, nCmdShow); //ÇÁ·¹ÀÎ À©µµ¿ì¸¦ È­¸é¿¡ Ç¥½Ã //***(5)¸Þ½ÃÁö ·çÇÁ while (GetMessage(&msg, NULL, 0, 0) > 0) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam; } //***(6)À©µµ¿ì ÇÁ·Î½ÃÀú LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static POINT MousePos; //¸¶¿ì½º x,y ÁÂÇ¥¸¦ ÀúÀåÇÒ º¯¼ö static BOOL bDrawing = FALSE; switch (iMessage) { case WM_LBUTTONDOWN: MousePos.x = LOWORD(lParam); MousePos.y = HIWORD(lParam); bDrawing = TRUE; SetCapture(hWnd); return 0; case WM_MOUSEMOVE: if (bDrawing == TRUE) { hdc = GetDC(hWnd); MoveToEx(hdc, MousePos.x, MousePos.y, NULL); MousePos.x = LOWORD(lParam); MousePos.y = HIWORD(lParam); LineTo(hdc, MousePos.x, MousePos.y); ReleaseDC(hWnd, hdc); } return 0; case WM_LBUTTONUP: bDrawing = FALSE; ReleaseCapture(); return 0; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, iMessage, wParam, lParam); }