WM_SETTINGCHANGE

Àμö

wParam : ¾î¶² ¼³Á¤ÀÌ º¯°æµÇ¾ú´ÂÁö¸¦ ³ªÅ¸³½´Ù. SystemParametersInfo ÇÔ¼ö¿¡ ÀÇÇØ ÀÌ ¸Þ½ÃÁö°¡ ¹ß»ýµÇ¾ú´Ù¸é wParamÀº ÆĶó¹ÌÅÍ Ç÷¡±×°¡ µÈ´Ù. Á¤Ã¥ º¯°æ¿¡ ÀÇÇØ ÀÌ ¸Þ½ÃÁö°¡ ¹ß»ýµÈ °æ¿ì wParamÀº 1(ÄÄÇ»ÅÍ Á¤Ã¥ º¯°æ) ¶Ç´Â 0(»ç¿ëÀÚ Á¤Ã¥ º¯°æ) Áß Çϳª°¡ µÈ´Ù. ·ÎÄÉÀÏ ¼³Á¤ÀÌ º¯°æµÇ¾úÀ¸¸é wParamÀº 0À̸ç ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÀÌ ¸Þ½ÃÁö¸¦ Á÷Á¢ º¸³Â´Ù¸é NULLÀÌ µÈ´Ù.

lParam : º¯°æµÈ ½Ã½ºÅÛ ÆĶó¹ÌÅÍÀÇ À̸§ ¹®ÀÚ¿­ÀÌ´Ù. ·¹Áö½ºÆ®¸®ÀÇ Å° À̸§À̳ª Win.ini ÀÇ ¼½¼Ç À̸§ÀÌ Àü´ÞµÈ´Ù. ±×·¯³ª ·¹Áö½ºÆ®¸® Å°ÀÏ °æ¿ì Àüü °æ·Î°¡ ¾Æ´Ï¶ó ´Ü¼øÈ÷ Å°ÀÇ À̸§¸¸ Àü´ÞµÇ¸ç ¼³Á¤À» º¯°æÇÏ´Â ÇÁ·Î±×·¥ÀÌ ÀÌ Àμö¿¡ Á¤È®ÇÏ°Ô °ªÀ» ´ëÀÔÇØ ÁÖÁö ¾Ê±â ¶§¹®¿¡ ÀÌ Àμö·ÎºÎÅÍ ¾î¶² ¼³Á¤ÀÌ º¯°æµÇ¾ú´ÂÁö Á¤È®ÇÏ°Ô ¾Ë¾Æ³»±â´Â ¾î·Æ´Ù. µû¶ó¼­ ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÂüÁ¶ÇÏ°í ÀÖ´Â ¸ðµç ¼³Á¤°ªÀ» ´Ù½Ã Á¶»çÇØ¾ß ÇÑ´Ù. Á¤Ã¥ÀÌ º¯°æµÈ °æ¿ì lParamÀ¸·Î Àü´ÞµÇ´Â ¹®ÀÚ¿­Àº "Policy"°¡ µÇ¸ç ·ÎÄÉÀÏÀÌ º¯°æµÈ °æ¿ì lParamÀº "intl"ÀÌ µÈ´Ù.

¼³¸í

SystemParametersInfo ÇÔ¼ö¿¡ ÀÇÇØ ½Ã½ºÅÛ ÆĶó¹ÌÅÍ°¡ º¯°æµÇ¾ú°Å³ª Á¤Ã¥ÀÌ º¯°æµÇ¾úÀ» ¶§ ¸ðµç ž ·¹º§ À©µµ¿ì°Ô ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù. ½Ã½ºÅÛ ¼³Á¤ »óŸ¦ ÂüÁ¶ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ Âü°íÇÏ°í ÀÖ´Â ¼³Á¤ »óŸ¦ ´Ù½Ã Àû¿ëÇØ¾ß ÇÑ´Ù.

ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á÷Á¢ ½Ã½ºÅÛ ¼³Á¤À» º¯°æÇß´Ù¸é SendMessageTimeOut(HWND_BROADCAST,... ÇÔ¼ö·Î ¸ðµç ž ·¹º§ À©µµ¿ì¿¡°Ô º¯°æ »ç½ÇÀ» ¾Ë·Á ÁÖ¾î¾ß ÇÑ´Ù.

¸®ÅÏ

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

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ¿öÅ© ¿¡¸®¾î ¿µ¿ªÀ» Á¶»çÇÏ¿© º¸¿©ÁØ´Ù. ¿öÅ© ¿¡¸®¾î¶õ µ¥½ºÅ©Å¾ ¿µ¿ª¿¡¼­ Ÿ½ºÅ© ¹Ù°¡ Â÷ÁöÇÏ°í ÀÖ´Â ¿µ¿ªÀ» Á¦¿ÜÇÑ ¿µ¿ªÀÌ´Ù.

RECT wrt;
void GetWorkArea()
{
	SystemParametersInfo(SPI_GETWORKAREA,0,&wrt,0);
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	TCHAR Mes[256];

	switch(iMessage) {
	case WM_CREATE:
		GetWorkArea();
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		wsprintf(Mes,"ÇöÀç ¿öÅ© ¿¡¸®¾î ÁÂÇ¥´Â %d,%d-%d,%dÀÔ´Ï´Ù",
			wrt.left, wrt.top, wrt.right, wrt.bottom);
		TextOut(hdc,10,10,Mes,lstrlen(Mes));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_SETTINGCHANGE:
		GetWorkArea();
		InvalidateRect(hWnd,NULL,TRUE);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

WM_CREATE¿¡¼­ ¿öÅ© ¿¡¸®¾î ¿µ¿ªÀ» ¹Ì¸® Á¶»çÇØ ³õÀ¸¸é WM_PAINT¿¡¼­ Á¶»çÇÑ ¿µ¿ª ÁÂÇ¥¸¦ ¹®ÀÚ¿­·Î ¹Ù²Ù¾î Ãâ·ÂÇØ ÁØ´Ù. ¸¸¾à WM_SETINGCHANGE ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾ÊÀ¸¸é Ÿ½ºÅ© ¹ÙÀÇ À§Ä¡¸¦ ¿Å±â°Å³ª Çػ󵵸¦ ¹Ù²Ù¾îµµ ÀÌ ÇÁ·Î±×·¥Àº ÃÖÃÊ Á¶»çÇÑ ¿öÅ© ¿¡¸®¾î ÁÂÇ¥¸¦ °è¼Ó »ç¿ëÇÏ°Ô µÇ¹Ç·Î ºÎÁ¤È®ÇÏ°Ô µ¿ÀÛÇÒ À§ÇèÀÌ ÀÖ´Ù.

Ç÷§Æû

95ÀÌ»ó

ÂüÁ¶

 


written by http://www.winapi.co.kr