Àμö |
LOWORD(wParam) : À©µµ¿ì°¡ È°¼ºÈµÇ¾ú´ÂÁö ºñÈ°¼ºÈ µÇ¾ú´ÂÁö¸¦ Ç¥ÇöÇÑ´Ù.
HIWORD(wParam) : À©µµ¿ìÀÇ ÃÖ¼ÒÈ »óŸ¦ Àü´ÞÇϸç ÃÖ¼ÒȵǾî ÀÖÀ¸¸é 0 ÀÌ¿ÜÀÇ °ªÀ» °¡Áø´Ù. lParam : È°¼ºÈ »óÅ°¡ º¯°æµÈ ´Ù¸¥ À©µµÀÇ ÇÚµéÀÌ Àü´ÞµÈ´Ù. ÀÌ À©µµ¿ì°¡ È°¼ºÈµÇ¾ú´Ù¸é lParamÀº ºñÈ°¼ºÈµÈ À©µµ¿ìÀÇ ÇÚµéÀÌ Àü´ÞµÇ¸ç ÀÌ À©µµ¿ì°¡ ºñÈ°¼ºÈµÇ¾ú´Ù¸é »õ·Î È°¼ºÈµÈ À©µµ¿ìÀÇ ÇÚµéÀÌ Àü´ÞµÈ´Ù. Áï lParamÀº È°¼ºÈ »óÅ°¡ ¹Ù²ï »ó´ëÆí À©µµ¿ìÀÇ Çڵ鰪ÀÌ´Ù. »ó´ëÆí À©µµ¿ì°¡ ¾øÀ» ¼öµµ ÀÖÀ¸¸ç À̶§´Â NULLÀÌ Àü´ÞµÈ´Ù. |
||||||||
¼³¸í |
¾î¶² ½ÃÁ¡¿¡¼ È°¼ºÈ »óÅÂÀÇ À©µµ¿ì´Â ¿ÀÁ÷ Çϳª¸¸ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. È°¼ºÈµÇ¾î ÀÖ´Ù´Â °ÍÀº ÇöÀç »ç¿ëÀÚ°¡ »ç¿ëÇÏ°í ÀÖ´Â À©µµ¿ì¶ó´Â ¶æÀÌ´Ù. ž ·¹º§(¿À¹ö·¦µå, Æ˾÷)À©µµ¿ì¸¸ È°¼ºÈ µÉ ¼ö ÀÖÀ¸¸ç Â÷Àϵå À©µµ¿ì´Â È°¼ºÈµÉ ¼ö ¾ø´Ù. È°¼ºÈµÈ ºÎ¸ð À©µµ¿ì¿¡ ¼ÓÇÑ Â÷Àϵå À©µµ¿ì´Â Æ÷Ä¿½º¸¦ °¡Áú ¼ö ÀÖ´Ù. ÀÌ ¸Þ½ÃÁö´Â À©µµ¿ìÀÇ È°¼ºÈ »óÅ°¡ º¯°æµÉ ¶§ º¸³»Áö´Âµ¥ »õ·Î È°¼ºÈµÇ´Â À©µµ¿ì¿Í È°¼º »óŸ¦ ÀÒ´Â À©µµ¿ì¿¡°Ô µ¿½Ã¿¡ º¸³»Áø´Ù. ¿¹¸¦ µé¾î AÀ©µµ¿ì°¡ È°¼ºÈµÈ »óÅ¿¡¼ »ç¿ëÀÚ°¡ BÀ©µµ¿ì¸¦ ¼±ÅÃÇß´Ù¸é AÀ©µµ¿ì¿¡°Ô´Â ºñÈ°¼ºÈµÈ´Ù´Â ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸ç BÀ©µµ¿ì¿¡°Ô´Â »õ·Î È°¼ºÈ µÈ´Ù´Â ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù. µÎ À©µµ¿ì°¡ °°Àº ½º·¹µå¿¡ ¼Ò¼ÓµÇ¾î ÀÖÀ¸¸é Áï, µ¿ÀÏÇÑ ¸Þ½ÃÁö Å¥¸¦ »ç¿ëÇÏ°í ÀÖÀ¸¸é ¸Þ½ÃÁö´Â µ¿±âÀûÀ¸·Î Àü´ÞµÈ´Ù. ºñÈ°¼ºÈµÇ´Â À©µµ¿ì¿¡°Ô ¸Þ½ÃÁö°¡ ¸ÕÀú Àü´ÞµÇ°í ÀÌ ¸Þ½ÃÁö°¡ ó¸®µÈ ÈÄ È°¼ºÈµÈ À©µµ¿ì¿¡°Ô ¸Þ½ÃÁö°¡ ÀÌ¾î¼ Àü´ÞµÈ´Ù. µû¶ó¼ ºñÈ°¼ºÈµÇ´Â À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¿¡ ´Ê°Ô ÀÀ´äÇϸé È°¼ºÈµÇ´Â À©µµ¿ìµµ ±×¸¸Å ´Ê°Ô È°¼ºÈµÈ´Ù. µÎ À©µµ¿ì°¡ ´Ù¸¥ ¸Þ½ÃÁö Å¥¸¦ »ç¿ëÇÏ°í ÀÖÀ¸¸é ÀÌ ¸Þ½ÃÁö´Â ºñµ¿±âÀûÀ¸·Î Àü´ÞµÇ¹Ç·Î ºñÈ°¼ºÈµÇ´Â À©µµ¿ìÀÇ ÀÀ´ä ¿©ºÎ¿¡ »ó°ü¾øÀÌ »õ·Î È°¼ºÈ µÇ´Â À©µµ¿ì´Â À©µµ¿ì´Â Áï½Ã »ç¿ë °¡´ÉÇÑ »óÅ°¡ µÈ´Ù. DefWindowProcÀº ÃÖ¼ÒȵÇÁö ¾ÊÀº À©µµ¿ì°¡ È°¼ºÈµÉ ¶§ Å°º¸µå Æ÷Ä¿½º¸¦ Àü´ÞÇÑ´Ù. »ç¿ëÀÚ°¡ ¸¶¿ì½º·Î À©µµ¿ì¸¦ Ŭ¸¯ÇÏ¿© È°¼ºÈÇß´Ù¸é WM_MOUSEACTIVATE ¸Þ½ÃÁö°¡ ¸ÕÀú Àü´ÞµÇ°í ÀÌ ¸Þ½ÃÁöÀÇ ÀÀ´ä °á°ú¿¡ µû¶ó È°¼ºÈ ¿©ºÎ°¡ °áÁ¤µÈ´Ù. |
||||||||
¸®ÅÏ |
ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù. |
||||||||
¿¹Á¦ |
´ÙÀ½ ¿¹Á¦´Â ¼¼ °³ÀÇ Æ˾÷ À©µµ¿ì¸¦ °¡Áö´Âµ¥ °¢ Æ˾÷Àº È°¼ºÈ »óÅÂÀÏ ¶§ ÆĶõ»öÀÌ µÇ¸ç ºñÈ°¼ºÈ »óÅÂÀÏ ¶§´Â »¡°£»öÀÌ µÈ´Ù. °¢ Æ˾÷ À©µµ¿ì´Â ÀÚ½ÅÀÇ ¹è°æ »ö»óÀ» ¿©ºÐ ¸Þ¸ð¸®¿¡ ÀúÀåÇÑ´Ù. #include <windows.h> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); LRESULT CALLBACK ChildProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam); HINSTANCE g_hInst; HWND hWndMain; LPCTSTR lpszClass=TEXT("WM_ACTIVATE"); 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=4; WndClass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1); 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); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hbrBackground=NULL; WndClass.lpfnWndProc=(WNDPROC)ChildProc; WndClass.lpszClassName="ChildCls"; WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); RegisterClass(&WndClass); hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW, 10,210,590,100, NULL,(HMENU)NULL,hInstance,NULL); ShowWindow(hWnd,nCmdShow); hWndMain=hWnd; while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return (int)Message.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; TCHAR Mes[]="¼¼ °³ÀÇ Æ˾÷ À©µµ¿ì°¡ ÀÖ½À´Ï´Ù. °¢°¢À» ¼±ÅÃÇØ ºÁ"; switch(iMessage) { case WM_CREATE: CreateWindow("ChildCls","Æ˾÷1",WS_POPUP | WS_VISIBLE | WS_CAPTION, 10,10,190,190,hWnd,(HMENU)NULL,g_hInst,NULL); CreateWindow("ChildCls","Æ˾÷2",WS_POPUP | WS_VISIBLE | WS_CAPTION, 210,10,190,190,hWnd,(HMENU)NULL,g_hInst,NULL); CreateWindow("ChildCls","Æ˾÷3",WS_POPUP | WS_VISIBLE | WS_CAPTION, 410,10,190,190,hWnd,(HMENU)NULL,g_hInst,NULL); return 0; case WM_PAINT: hdc=BeginPaint(hWnd, &ps); TextOut(hdc,10,10,Mes,lstrlen(Mes)); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } LRESULT CALLBACK ChildProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; RECT crt; HBRUSH hBrush,OldBrush; COLORREF back; switch(iMessage) { case WM_ACTIVATE: if (LOWORD(wParam) == WA_INACTIVE) { back=RGB(255,0,0); } else { back=RGB(0,0,255); } SetWindowLong(hWnd,0,(LONG)back); InvalidateRect(hWnd,NULL,FALSE); return 0; case WM_PAINT: GetClientRect(hWnd,&crt); hdc=BeginPaint(hWnd, &ps); back=GetWindowLong(hWnd,0); hBrush=CreateSolidBrush(back); OldBrush=(HBRUSH)SelectObject(hdc,hBrush); Rectangle(hdc,0,0,crt.right,crt.bottom); DeleteObject(SelectObject(hdc,OldBrush)); EndPaint(hWnd, &ps); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } Æ˾÷ À©µµ¿ì°¡ WM_ACTIVATE ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ È°¼ºÈ ¿©ºÎ¿¡ µû¶ó ¹è°æ »ö»óÀ» º¯°æÇϵµ·Ï ÇÏ¿´´Ù.
|
||||||||
Ç÷§Æû |
95ÀÌ»ó |
||||||||
ÂüÁ¶ |
WM_ACTIVATEAPP |
written by http://www.winapi.co.kr
|