| Àμö |
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
|