Àμö |
wParam : »ç¿ëµÇÁö ¾Ê´Â´Ù. lParam : ·Î±×¿ÀÇÁ¸¦ ÇÏ´Â °ÍÀÎÁö ½Ã½ºÅÛ ¼Ë´Ù¿îÀ» ÇÏ´Â °ÍÀÎÁö¸¦ ³ªÅ¸³½´Ù. ÀÌ °ªÀÌ 0ÀÌ¸é ½Ã½ºÅÛÀ» ¿ÏÀüÈ÷ Á¾·áÇÏ´Â °ÍÀ̸ç ENDSESSION_LOGOFF Ç÷¡±×°¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é ·Î±×¿ÀÇÁ¸¸ ÇÏ´Â °ÍÀÌ´Ù. ÀÌ °ªÀº ºñÆ® ÇʵåÀ̹ǷΠ¹Ýµå½Ã & ¿¬»êÀÚ·Î Ç÷¡±×ÀÇ Á¸Àç À¯¹«¸¦ Á¡°ËÇØ¾ß ÇÑ´Ù. if (lParam & ENDSESSION_LOGOFF) { |
¼³¸í |
»ç¿ëÀÚ°¡ ¿î¿µÃ¼Á¦¸¦ Á¾·á ¶Ç´Â ·Î±× ¿ÀÇÁÇÏ°íÀÚ ÇÒ ¶§, ¶Ç´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ExitWindows ÇÔ¼ö·Î ¿î¿µÃ¼Á¦¸¦ Á¾·áÇÏ°íÀÚ ÇÒ ¶§(´Ü, EXW_FORCE Ç÷¡±×°¡ ¾ø¾î¾ß ÇÑ´Ù)¸ðµç ÀÀ¿ë ÇÁ·Î±×·¥À¸·Î ÀÌ ¸Þ½ÃÁö°¡ º¸³»Áø´Ù. ÀÌ ¸Þ½ÃÁö´Â ½ÇÇàÁßÀÎ °¢ ÇÁ·Î±×·¥¿¡°Ô "Áö±Ý ¼Ë´Ù¿îÇҰǵ¥ Çصµ ±¦Âú½À´Ï±î?" ¶ó°í Áú¹®ÇÏ´Â °Í°ú °°´Ù. ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ÀÚ½ÅÀÇ ³»ºÎ »óŸ¦ º¸°í ¿î¿µÃ¼Á¦ÀÇ Á¾·á¸¦ Çã°¡Çϰųª °ÅºÎÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ÇÑ ÇÁ·Î±×·¥ÀÌ¶óµµ 0À» ¸®ÅÏÇÏ¸é ¿î¿µÃ¼Á¦ÀÇ Á¾·á´Â Ãë¼ÒµÈ´Ù. ¹ÌÀúÀå ¹®¼°¡ Àִٰųª ¶Ç´Â ³×Æ®¿÷ ¿¬°áÀ» ÇԺηΠ²÷À» ¼ö ¾ø´Â »óȲÀ̰ųª ¾Æ´Ï¸é Àý´ë·Î Á¾·áÇؼ´Â ¾ÈµÇ´Â Áß¿äÇÑ ¼¹ö ÇÁ·Î±×·¥ÀÎ °æ¿ì´Â ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ¼Ë´Ù¿îÀ» °ÅºÎÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¸¸¾à TRUE¸¦ ¸®ÅÏÇÏ¿© Á¾·á¸¦ Çã°¡ÇÏ°Ô µÇ¸é ¿î¿µÃ¼Á¦¸¦ Á¾·áÇÑ´Ù´Â WM_ENDSESSION ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù. DefWindowProcÀº ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ TRUE¸¦ ¸®ÅÏÇϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î ÀÌ ¸Þ½ÃÁö¸¦ Ưº°È÷ ó¸®ÇÏÁö ¾ÊÀ¸¸é ¿î¿µÃ¼Á¦ÀÇ Á¾·á¸¦ Ç×»ó Çã°¡ÇÏ´Â °ÍÀÌ µÈ´Ù. ¿î¿µÃ¼Á¦´Â ¼Ë´Ù¿îÀü¿¡ ½ÇÇàÁßÀÎ ¸ðµç ÇÁ·Î±×·¥¿¡°Ô ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ¼Ë´Ù¿î Çã°¡¸¦ ¹ÞÀº ÈÄ ¸ðµç ÇÁ·Î±×·¥ÀÌ Çã°¡ÇÒ ¶§¸¸ °³º° ÇÁ·Î±×·¥À» Á¾·á½ÃŲ ÈÄ ¼Ë´Ù¿îÇÑ´Ù. À̶§ °³º° ÇÁ·Î±×·¥ÀÇ Á¾·á ½ÃÁ¡Àº ¿î¿µÃ¼Á¦ ¹öÀü¿¡ µû¶ó ´Ù¸£´Ù. 95/98 °è¿Àº ¸ðµç ÇÁ·Î±×·¥¿¡°Ô ¼Ë´Ù¿î Çã°¡¸¦ ¹ÞÀº ÈÄ °¢ ÇÁ·Î±×·¥À» Á¾·áÇÏÁö¸¸ NT/2000 °è¿Àº °³º° À©µµ¿ì¿¡°Ô Çã°¡¸¦ ¹ÞÀº ÈÄ °¢°¢ÀÇ ÇÁ·Î±×·¥À» ¼ø¼´ë·Î Á¾·á½ÃŲ´Ù. ±×·¡¼ ¸¸¾à A,B,C ¼¼°³ÀÇ ÇÁ·Î±×·¥ÀÌ ÀÖ°í B°¡ Çã°¡¸¦ °ÅºÎÇÒ ¶§ 95/98°è¿Àº ¸ðµç ÇÁ·Î±×·¥ÀÌ Á¾·áµÇÁö ¾ÊÁö¸¸ NT/2000 °è¿Àº ÀÏ´Ü A°¡ ¸ÕÀú Á¾·áµÇ°í BÀÇ °ÅºÎ¸¦ ¹Þ¾ÒÀ» ¶§ ¼Ë´Ù¿îÀ» ÁßÁöÇÑ´Ù. |
¸®ÅÏ |
¿î¿µÃ¼Á¦ Á¾·á¸¦ Çã°¡ÇÏ·Á¸é TRUE¸¦ ¸®ÅÏÇÏ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì´Â FALSE(=0)¸¦ ¸®ÅÏÇÑ´Ù. |
¿¹Á¦ |
´ÙÀ½ ¿¹Á¦´Â WM_QUERYENDSESSION ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ¹«Á¶°Ç FALSE¸¦ ¸®ÅÏÇϵµ·Ï ÇÔÀ¸·Î½á ¿î¿µÃ¼Á¦ Á¾·á¸¦ °ÅºÎÇÑ´Ù. LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static TCHAR Mes[256]="ÀÌ ÇÁ·Î±×·¥ÀÌ ½ÇÇàÁßÀÎ µ¿¾È¿¡´Â ¿î¿µÃ¼Á¦ Á¾·á¸¦ ¸øÇÑ´Ù"; switch(iMessage) { case WM_QUERYENDSESSION: wsprintf(Mes,"¾ÈµÅ! ³ª´Â Àý´ë·Î Á×À» ¼ö ¾ø¾î"); InvalidateRect(hWnd,NULL,TRUE); return FALSE; 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 WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; int Result; TCHAR Mes[]="½Ã½ºÅÛ Á¾·á½Ã¿¡ ¹ÌÀúÀå ¹®¼¸¦ ÀúÀåÇÏ´Â ¿¹Á¦"; switch(iMessage) { case WM_QUERYENDSESSION: if (TRUE/*¹ÌÀúÀå ¹®¼°¡ ÀÖ´Ù Ä¡°í*/) { Result=MessageBox(hWnd,"ÀÌ ¹®¼¸¦ ÀúÀåÇÒ·¡?","Áú¹®",MB_YESNOCANCEL); if (Result==IDCANCEL) { return FALSE; } if (Result==IDYES) { // ÀúÀåÇß´Ù Ä¡°í } } return TRUE; case WM_PAINT: hdc=BeginPaint(hWnd, &ps); TextOut(hdc,10,10,Mes,lstrlen(Mes)); EndPaint(hWnd, &ps); return 0; case WM_CLOSE: MessageBox(hWnd,"³ª Áö±Ý ´ÝÇô¿ä","¾ÆÀÌ°í",MB_OK); break; case WM_DESTROY: MessageBox(hWnd,"³ª Áö±Ý Á×¾î¿ä","¾ÆÀÌ°í",MB_OK); PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ÀÌ ¿¹Á¦¸¦ ½ÇÇàÇØ º¸¸é ½Ã½ºÅÛ Á¾·á½Ã¿¡´Â WM_CLOSE, WM_DESTROY µîÀÇ ¸Þ½ÃÁö°¡ Àü´ÞµÇÁö ¾ÊÀ½À» ¾Ë ¼ö ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ¿î¿µÃ¼Á¦ Á¾·á´Â °ð Àü¿øÀÌ ²¨Áø´Ù´Â Ư¼öÇÑ »óȲÀ̱⠶§¹®¿¡ ¸ÞÀÎ À©µµ¿ì°¡ Æı«µÇÁö ¾Ê±â ¶§¹®ÀÌ´Ù. WM_CLOSE¿¡¼ ¹ÌÀúÀå ¹®¼¿¡ ´ëÇÑ Ã³¸®¸¦ ÇÏ°í ÀÖ´õ¶óµµ ½Ã½ºÅÛ Á¾·á½Ã¿¡´Â ÀÌ Ã³¸®°¡ »ý·«µÊÀ¸·Î º°µµÀÇ Ã³¸®°¡ ÀÖ¾î¾ß ÇÑ´Ù. |
Ç÷§Æû |
95ÀÌ»ó |
ÂüÁ¶ |
WM_ENDSESSION : ¿î¿µÃ¼Á¦ Á¾·á°¡ °áÁ¤µÈ ÈÄ¿¡ º¸³»Áö´Â ¸Þ½ÃÁöÀÌ´Ù. |
written by http://www.winapi.co.kr
|