WM_COMMAND

Àμö

LOWORD(wParam) : ÅëÁö ¸Þ½ÃÁö¸¦ º¸³½ Ç׸ñÀÇ IDÀÌ´Ù. ¸Þ´ºÀÇ ID, ¾×¼¿·¯·¹ÀÌÅÍÀÇ ID ¶Ç´Â ÄÁÆ®·ÑÀÇ ID°¡ Àü´ÞµÈ´Ù.

HIWORD(wParam) : ÄÁÆ®·ÑÀÌ ÀÌ ¸Þ½ÃÁö¸¦ º¸³¾ ¶§´Â ÅëÁö Äڵ尡 Àü´ÞµÈ´Ù. ÅëÁö ÄÚµåÀÇ Á¾·ù´Â ¿¡µðÆ®, ¸®½ºÆ® ¹Ú½º µîÀÇ ÄÁÆ®·Ñ¿¡ µû¶ó ´Ù¾çÇÏ´Ù. ¸Þ´º Ç׸ñÀÌ ¼±ÅÃµÈ °æ¿ì ÀÌ °ªÀº 0ÀÌ¸ç ¾×¼¿·¯·¹ÀÌÅÍ°¡ ¼±ÅÃµÈ °æ¿ì ÀÌ °ªÀº 1ÀÌ´Ù.

lParam : ÅëÁö ¸Þ½ÃÁö¸¦ º¸³½ ÄÁÆ®·ÑÀÇ À©µµ¿ì ÇÚµéÀÌ Àü´ÞµÈ´Ù. ¸Þ´º³ª ¾×¼¿·¯·¹ÀÌÅͷκÎÅÍ ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÈ °æ¿ì ÀÌ °ªÀº NULLÀÌ´Ù.

¼³¸í

¸Þ´º, ¾×¼¿·¯·¹ÀÌÅ͸¦ ¼±ÅÃÇßÀ» ¶§ ÀÌ ¸Þ½ÃÁö°¡ Àü´ÞµÇ¸ç Â÷Àϵå ÄÁÆ®·ÑÀÌ ºÎ¸ð À©µµ¿ì·Î ÅëÁö ¸Þ½ÃÁö¸¦ Àü´ÞÇÒ ¶§µµ ÀÌ ¸Þ½ÃÁö ÇüÅ·ΠÀü´ÞµÈ´Ù. °¢Á¾ ÄÁÆ®·Ñ·ÎºÎÅÍ °ªÀÌ Àü´ÞµÇ¸ç ¶ÇÇÑ °¢ ÄÁÆ®·ÑÀº ´Ù¾çÇÑ ÅëÁö ¸Þ½ÃÁö¸¦ º¸³»¹Ç·Î ÀÌ ¸Þ½ÃÁö´Â ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°Àº ÀÌÁß switch¹®À¸·Î ÀÛ¼ºµÈ´Ù.

switch (LOWORD(wParam)) { 
case ID: 
	switch (HIWORD(wParam)) 
	case code: ........ 

ÄÁÆ®·Ñ(¶Ç´Â ¸Þ´º Ç׸ñÀÇ ID)¿¡ µû¶ó ¸ÕÀú ºÐ±â¸¦ ÇÏ°í ÅëÁö ¸Þ½ÃÁö º°·Î ´Ù½Ã ºÐ±â¸¦ ÇÑ´Ù. ¸Þ´º¿Í ¾×¼¿·¯·¹ÀÌÅÍ´Â º¸Åë °°Àº ¸í·É¿¡ ´ëÇØ °°Àº ID·Î ÇѽÖÀÌ Á¤ÀÇµÇ¸ç µÑ Áß ¾î¶² Ç׸ñÀ» ¼±ÅÃÇÏ´õ¶óµµ ÇÁ·Î±×·¥ÀÇ µ¿ÀÛÀº µ¿ÀÏÇÏ´Ù. ±×·¯³ª ¸¸¾à ÀÌ µÑÀ» ±»ÀÌ ±¸ºÐÇÏ·Á¸é HIWORD(wParam)°ªÀ» ÂüÁ¶ÇÏ¸é µÈ´Ù. ¸Þ´º Ç׸ñ°ú ´ëÀÀµÇ´Â ¾×¼¿·¯·¹ÀÌÅÍ´Â À©µµ¿ì°¡ ÃÖ¼ÒÈ­µÇ¾î ÀÖÀ» ¶§´Â »ç¿ë ±ÝÁöµÇÁö¸¸ ¸Þ´º Ç׸ñ°ú ¹«°üÇÏ°Ô ´Üµ¶À¸·Î Á¤ÀÇµÈ ¾×¼¿·¯·¹ÀÌÅÍ´Â ÃÖ¼ÒÈ­ »óÅ¿¡¼­µµ Àü´ÞµÈ´Ù.

¸®ÅÏ

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

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ¸Þ´º, ¾×¼¿·¯·¹ÀÌÅÍ, ¿¡µðÆ® ÄÁÆ®·Ñ·ÎºÎÅÍ Àü´ÞµÇ´Â ÅëÁö ¸Þ½ÃÁö¸¦ WM_COMMAND ¸Þ½ÃÁö·Î ó¸®ÇÑ´Ù.

HWND hEdit;
#define ID_EDIT 0
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	char buf[128];

	switch(iMessage) {
	case WM_CREATE:
		hEdit=CreateWindow("edit",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER,
			10,10,200,25,hWnd,(HMENU)ID_EDIT,g_hInst,NULL);
		return 0;
	case WM_COMMAND:
		switch(LOWORD(wParam)) {
		case IDM_ITEM1:
			if (HIWORD(wParam) == 0) {
				MessageBox(hWnd,"ù¹ø° ¸Þ´º Ç׸ñ ¼±ÅÃ","¾Ë¸²",MB_OK);
			} else {
				MessageBox(hWnd,"ù¹ø° ¾×¼¿·¯·¹ÀÌÅÍ ¼±ÅÃ","¾Ë¸²",MB_OK);
			}
			break;
		case IDM_ITEM2:
			MessageBox(hWnd,"µÎ¹ø° ¸Þ´º Ç׸ñ ¼±ÅÃ","¾Ë¸²",MB_OK);
			break;
		case IDM_ITEM3:
			MessageBox(hWnd,"¾×¼¿·¯·¹ÀÌÅÍ ¼±ÅÃ","¾Ë¸²",MB_OK);
			break;
		case IDM_EXIT:
			DestroyWindow(hWnd);
			break;
		case ID_EDIT:
			switch(HIWORD(wParam)) {
			case EN_CHANGE:
				GetWindowText((HWND)lParam,buf,128);
				SetWindowText(hWnd,buf);
				break;
			}
			break;
		}
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

IDM_ITEM1, IDM_ITEM2´Â ¸Þ´º¿Í ¾×¼¿·¯·¹ÀÌÅÍ¿¡ ¸ðµÎ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇؼ­ ¸í·ÉÀ» ³»¸± ¼öµµ ÀÖ°í ¾×¼¿·¯·¹ÀÌÅÍ(Ctrl+1, Ctrl+2)¸¦ ¼±ÅÃÇؼ­ ¸í·ÉÀ» ³»¸± ¼öµµ ÀÖ´Ù. À̶§ ±»ÀÌ ¾î¶² Ç׸ñÀ¸·ÎºÎÅÍ ¸í·ÉÀÌ Àü´ÞµÇ¾ú´ÂÁö¸¦ ±¸ºÐÇÏ°íÀÚ ÇÑ´Ù¸é HIWORD(wParam)°ªÀ¸·ÎºÎÅÍ Á¶»çÇÒ ¼ö ÀÖÀ¸´Ù. IDM_ITEM1 Ç׸ñÀº ¾×¼¿·¯·¹ÀÌÅ͸¦ ¼±ÅÃÇÑ °æ¿ì¿Í ¸Þ´º¸¦ ¼±ÅÃÇÑ °æ¿ì °¢°¢ ´Ù¸¥ ¸Þ½ÃÁö¸¦ º¸¿©ÁÖµµ·Ï ÇÏ¿´À¸¸ç IDM_ITEM2Ç׸ñÀº Ç×»ó °°Àº ¸Þ½ÃÁö¸¦ º¸¿©ÁØ´Ù. IDM_ITEM3Àº ¸Þ´º¿¡´Â Á¤ÀǵǾî ÀÖÁö ¾Ê°í ¾×¼¿·¯·¹ÀÌÅÍ¿¡¸¸ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ¾×¼¿·¯·¹ÀÌÅͷθ¸ ¸í·ÉÀ» ³»¸± ¼ö ÀÖ´Ù. ÀÌ ¸í·ÉÀº ¸Þ´º Ç׸ñ°ú ´ëÀÀµÇ¾î ÀÖÁö ¾ÊÀ¸¹Ç·Î À©µµ¿ì°¡ ÃÖ¼ÒÈ­µÇ¾î À־ ¸í·ÉÀ» ³»¸± ¼ö ÀÖ´Ù.

ID_EDITÄÁÆ®·ÑÀº Àڽſ¡°Ô º¯È­°¡ ÀÖÀ» ¶§ ºÎ¸ð À©µµ¿ì¿¡°Ô WM_COMMAND ¸Þ½ÃÁö·Î ÅëÁö ¸Þ½ÃÁö¸¦ º¸³»´Âµ¥ À̶§ ¾î¶² ÀÌÀ¯·Î ÅëÁö ¸Þ½ÃÁö¸¦ º¸³Â´ÂÁö´Â HIWORD(wParam)À¸·Î Àü´ÞµÇ´Â ÅëÁö Äڵ带 º¸¸é ¾Ë ¼ö ÀÖ´Ù. ÀÌ ¿¹Á¦ÀÇ °æ¿ì ¿¡µðÆ®ÀÇ ÅؽºÆ®°¡ º¯°æµÇ¸é ¸ÞÀÎ À©µµ¿ìÀÇ Å¸ÀÌƲ ¹Ù ĸ¼Çµµ º¯°æÇϵµ·Ï ÇÏ¿´´Ù.

Ç÷§Æû

95ÀÌ»ó

ÂüÁ¶

 


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