case문 안에 변수를 넣고싶은데 상수를 넣어야된다며 오류가 뜨네요;;
define을 통해서
#define nMsg RegisterWindowMessage(TEXT("SoriMessage"))
이런식으로 해서 넣어도 안되는 것 같고요..
switch case문 분기를 동적으로? 지정할 수는 없는건가요?
RegisterWindowMessage(TEXT("SoriMessage")); 함수를 통해서 받아오는 값은 변하지 않는 상수입니다.
UINT nMsg = RegisterWindowMessage(TEXT("SoriMessage"));
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam) { switch (iMessage) { case WM_CREATE: return 0; case nMsg: <- 여기서 오류가 발생합니다. return 0; case WM_PAINT: return 0; case WM_DESTROY: return 0; } return(DefWindowProc(hWnd, iMessage, wParam, lParam)); }
switch¿¡µµ º¯¼ö, case ¿¡µµ º¯¼ö¶ó¸é ºñ±³ÇØ¾ßµÉ °ªÀÌ ¾ø¾îÁ®¹ö¸®´Â ³í¸®Àû ¸ð¼øÀÌ µÇ´Â°Ì´Ï´Ù.
case expr: ¿¡¼ exprÀº Á¤¼ö °è¿ÀÇ »ó¼ö ¿©¾ß ÇÕ´Ï´Ù. ¹®ÀÚ¿µµ ¾ÊµË´Ï´Ù. (case "Message": °°Àº Çüŵµ ¾ÊµË´Ï´Ù)
#define WM_CREATE (0x0000XXXX) <- ¿©±â¼ Áß¿äÇÑ°ÍÀº defineÀÌ ¾Æ´Ñ (0x0000XXXX) °¡ Á¤¼öÇü »ó¼ö ¶ó´Â °ÍÀÔ´Ï´Ù.
¾Æ·¡¿Í °°ÀÌ ÇÏ¼Å¾ß ÇÕ´Ï´Ù.
....
if (nMsg == iMessage) {
....
}
switch (iMessage) {
case WM_CREATE:
....
¹ß»ýºóµµ¿¡ µû¶ó È¿À²¼ºÀÌ ´Þ¶óÁö´Âµ¥
°æ¿ì°¡ ºñ½ÁÇÒ °æ¿ì¿Í ºÐ±â ·ÎÁ÷ÀÇ Æ²À» °¡´ÉÇϸé À¯ÁöÇÏ´Â Â÷¿ø¿¡¼ default ¸»¾¸µå¸° °ÍÀÌÁö¸¸
¿äÁò hw¼º´ÉÀÌ ÁÁ¾Æ¼ º° Â÷ÀÌ ¾øÀ¸´Ï
°¡µ¶¼ºÀÌ ´õ ÁÁÀº ÀºÐ ¹æ½ÄÀÌ ³ªÀº °Í °°½À´Ï´Ù
¾ð¾î³ª ÄÄÆÄÀÏ·¯¿¡ µû¶ó¼ Â÷ÀÌ°¡ ÀÖ±â´Â ÇÏÁö¸¸, ÀϹÝÀûÀ¸·Î switch case¹®ÀÇ °æ¿ì¿¡´Â ¹Ì¸® °¢ Á¶°ÇÀÇ Á¤¼ö·Î Á¡ÇÎ Å×À̺íÀ» ¸¸µé¾î¼ ±¸ÇöÇϱ⠶§¹®¿¡, º¯¼ö·Î´Â »ç¿ëÇÒ ¼ö °¡ ¾ø½À´Ï´Ù.
http://blog.naver.com/PostView.nhn?blogId=kki2406&logNo=80041410085
ÀÌ ºí·Î±×¸¦ º¸½Ã¸é if¿Í swichÀÇ ±¸Çö Â÷À̸¦ ¾Æ½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù.