WM_ACTIVATE

Àμö

LOWORD(wParam) : À©µµ¿ì°¡ È°¼ºÈ­µÇ¾ú´ÂÁö ºñÈ°¼ºÈ­ µÇ¾ú´ÂÁö¸¦ Ç¥ÇöÇÑ´Ù.

°ª

¼³¸í

WA_ACTIVE

¸¶¿ì½º Ŭ¸¯ ÀÌ¿ÜÀÇ ¹æ¹ýÀ¸·Î È°¼ºÈ­µÇ¾ú´Ù. SetActiveWindow ÇÔ¼ö¸¦ È£ÃâÇ߰ųª Alt+Tab, Alt+Esc µîÀÇ Å°º¸µå ´ÜÃàÅ°·Î È°¼ºÈ­ÇßÀ» ¶§ ÀÌ Àμö°¡ Àü´ÞµÈ´Ù.

WA_CLICKACTIVE

¸¶¿ì½º Ŭ¸¯¿¡ ÀÇÇØ È°¼ºÈ­µÇ¾ú´Ù.

WA_INACTIVE

ºñÈ°¼ºÈ­µÇ¾ú´Ù.

HIWORD(wParam) : À©µµ¿ìÀÇ ÃÖ¼ÒÈ­ »óŸ¦ Àü´ÞÇϸç ÃÖ¼ÒÈ­µÇ¾î ÀÖÀ¸¸é 0 ÀÌ¿ÜÀÇ °ªÀ» °¡Áø´Ù.

lParam : È°¼ºÈ­ »óÅ°¡ º¯°æµÈ ´Ù¸¥ À©µµÀÇ ÇÚµéÀÌ Àü´ÞµÈ´Ù. ÀÌ À©µµ¿ì°¡ È°¼ºÈ­µÇ¾ú´Ù¸é lParamÀº ºñÈ°¼ºÈ­µÈ À©µµ¿ìÀÇ ÇÚµéÀÌ Àü´ÞµÇ¸ç ÀÌ À©µµ¿ì°¡ ºñÈ°¼ºÈ­µÇ¾ú´Ù¸é »õ·Î È°¼ºÈ­µÈ À©µµ¿ìÀÇ ÇÚµéÀÌ Àü´ÞµÈ´Ù. Áï lParamÀº È°¼ºÈ­ »óÅ°¡ ¹Ù²ï »ó´ëÆí À©µµ¿ìÀÇ Çڵ鰪ÀÌ´Ù. »ó´ëÆí À©µµ¿ì°¡ ¾øÀ» ¼öµµ ÀÖÀ¸¸ç À̶§´Â NULLÀÌ Àü´ÞµÈ´Ù.

¼³¸í

¾î¶² ½ÃÁ¡¿¡¼­ È°¼ºÈ­ »óÅÂÀÇ À©µµ¿ì´Â ¿ÀÁ÷ Çϳª¸¸ Á¸ÀçÇÒ ¼ö ÀÖ´Ù. È°¼ºÈ­µÇ¾î ÀÖ´Ù´Â °ÍÀº ÇöÀç »ç¿ëÀÚ°¡ »ç¿ëÇÏ°í ÀÖ´Â À©µµ¿ì¶ó´Â ¶æÀÌ´Ù. ž ·¹º§(¿À¹ö·¦µå, Æ˾÷)À©µµ¿ì¸¸ È°¼ºÈ­ µÉ ¼ö ÀÖÀ¸¸ç Â÷Àϵå À©µµ¿ì´Â È°¼ºÈ­µÉ ¼ö ¾ø´Ù. È°¼ºÈ­µÈ ºÎ¸ð À©µµ¿ì¿¡ ¼ÓÇÑ Â÷Àϵå À©µµ¿ì´Â Æ÷Ä¿½º¸¦ °¡Áú ¼ö ÀÖ´Ù. ÀÌ ¸Þ½ÃÁö´Â À©µµ¿ìÀÇ È°¼ºÈ­ »óÅ°¡ º¯°æµÉ ¶§ º¸³»Áö´Âµ¥ »õ·Î È°¼ºÈ­µÇ´Â À©µµ¿ì¿Í È°¼º »óŸ¦ ÀÒ´Â À©µµ¿ì¿¡°Ô µ¿½Ã¿¡ º¸³»Áø´Ù. ¿¹¸¦ µé¾î AÀ©µµ¿ì°¡ È°¼ºÈ­µÈ »óÅ¿¡¼­ »ç¿ëÀÚ°¡ BÀ©µµ¿ì¸¦ ¼±ÅÃÇß´Ù¸é AÀ©µµ¿ì¿¡°Ô´Â ºñÈ°¼ºÈ­µÈ´Ù´Â ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸ç BÀ©µµ¿ì¿¡°Ô´Â »õ·Î È°¼ºÈ­ µÈ´Ù´Â ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù.

µÎ À©µµ¿ì°¡ °°Àº ½º·¹µå¿¡ ¼Ò¼ÓµÇ¾î ÀÖÀ¸¸é Áï, µ¿ÀÏÇÑ ¸Þ½ÃÁö Å¥¸¦ »ç¿ëÇÏ°í ÀÖÀ¸¸é ¸Þ½ÃÁö´Â µ¿±âÀûÀ¸·Î Àü´ÞµÈ´Ù. ºñÈ°¼ºÈ­µÇ´Â À©µµ¿ì¿¡°Ô ¸Þ½ÃÁö°¡ ¸ÕÀú Àü´ÞµÇ°í ÀÌ ¸Þ½ÃÁö°¡ ó¸®µÈ ÈÄ È°¼ºÈ­µÈ À©µµ¿ì¿¡°Ô ¸Þ½ÃÁö°¡ À̾ Àü´ÞµÈ´Ù. µû¶ó¼­ ºñÈ°¼ºÈ­µÇ´Â À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¿¡ ´Ê°Ô ÀÀ´äÇϸé È°¼ºÈ­µÇ´Â À©µµ¿ìµµ ±×¸¸Å­ ´Ê°Ô È°¼ºÈ­µÈ´Ù. µÎ À©µµ¿ì°¡ ´Ù¸¥ ¸Þ½ÃÁö Å¥¸¦ »ç¿ëÇÏ°í ÀÖÀ¸¸é ÀÌ ¸Þ½ÃÁö´Â ºñµ¿±âÀûÀ¸·Î Àü´ÞµÇ¹Ç·Î ºñÈ°¼ºÈ­µÇ´Â À©µµ¿ìÀÇ ÀÀ´ä ¿©ºÎ¿¡ »ó°ü¾øÀÌ »õ·Î È°¼ºÈ­ µÇ´Â À©µµ¿ì´Â À©µµ¿ì´Â Áï½Ã »ç¿ë °¡´ÉÇÑ »óÅ°¡ µÈ´Ù.

DefWindowProcÀº ÃÖ¼ÒÈ­µÇÁö ¾ÊÀº À©µµ¿ì°¡ È°¼ºÈ­µÉ ¶§ Å°º¸µå Æ÷Ä¿½º¸¦ Àü´ÞÇÑ´Ù. »ç¿ëÀÚ°¡ ¸¶¿ì½º·Î À©µµ¿ì¸¦ Ŭ¸¯ÇÏ¿© È°¼ºÈ­Çß´Ù¸é WM_MOUSEACTIVATE ¸Þ½ÃÁö°¡ ¸ÕÀú Àü´ÞµÇ°í ÀÌ ¸Þ½ÃÁöÀÇ ÀÀ´ä °á°ú¿¡ µû¶ó È°¼ºÈ­ ¿©ºÎ°¡ °áÁ¤µÈ´Ù.

¸®ÅÏ

ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù.

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ¼¼ °³ÀÇ Æ˾÷ À©µµ¿ì¸¦ °¡Áö´Âµ¥ °¢ Æ˾÷Àº È°¼ºÈ­ »óÅÂÀÏ ¶§ ÆĶõ»öÀÌ µÇ¸ç ºñÈ°¼ºÈ­ »óÅÂÀÏ ¶§´Â »¡°£»öÀÌ µÈ´Ù. °¢ Æ˾÷ À©µµ¿ì´Â ÀÚ½ÅÀÇ ¹è°æ »ö»óÀ» ¿©ºÐ ¸Þ¸ð¸®¿¡ ÀúÀåÇÑ´Ù.

#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