_ASSERTE °¡ GetLastError()¸¦ ¸ÁÄ£´Ù


1.¿ä¾à

MFC ¿¡¼­ Á¦°øÇÏ´Â ¿¡·¯ ¹æÁö¿ë ¸ÅÅ©·ÎÀÎ _ASSERTE °¡ È£ÃâµÇ¸é MFC ´Â Last Error ¸¦ 0 À» ¼ÂÆÃÇÏ°Ô µÇ¾î GetLastError() °¡ ¹«¿ëÁö¹°ÀÌ µÇ¾î ¹ö¸³´Ï´Ù.


2.º»¹®

´Ù¸¥ À©µµ¿ì¿¡ ¸Þ¼¼Áö¸¦ º¸³»±â À§Çؼ­ SendMessageTimeout ¸¦ »ç¿ëÇßÀ»¶§ return °ªÀÌ 0 À̰í GetLastError() °ªÀÌ 0 À̸é À§ÀÇ ÇÔ¼ö°¡ Time Out¿¡ °É·Á¼­ ½ÇÆÐ¸¦ ÇÑ °æ¿ìÀÔ´Ï´Ù.

* MSDN ¿¡ ´ÙÀ½°ú °°ÀÌ ÀûÇôÀÖ½À´Ï´Ù. *
If the function fails or time out, the return value is zero. To get extended error information, call GetLastError. If GetLastError returns zero, then the function timed out.

±×·±µ¥ À§ÀÇ ÇÔ¼öÀÇ ¸®ÅϰªÀ» üũÇϱâ À§Çؼ­ _ASSERTE ¸¦ »ç¿ëÇß´Ù°í Ä¡¸é ÇÁ·Î±×·¡¸ÓÀÇ Àǵµ¿Í´Â ´Þ¸®, À§ÀÇ ÇÔ¼ö°¡ ´Ù¸¥ ÀÌÀ¯·Î ½ÇÆÐ¸¦ Çß´Ù°í Ä¡´õ¶ó°í ¾ðÁ¦³ª time out ¿¡ ÀÇÇØ¼­ ÇÔ¼ö°¡ ½ÇÆÐÇѰͰú °°°Ô µË´Ï´Ù.

ÀÌ·± ¹®Á¦´Â ºñ´Ü À§ÀÇ ÇÔ¼ö¿¡¼­ »Ó¸¸¾Æ´Ï¶ó, GetLastError() ÇÔ¼ö¸¦ ÀûÀýÈ÷ »ç¿ëÇØ¾ß ÇÏ´Â ÇÔ¼öÀÇ °æ¿ì¿¡ ÀáÀçÀûÀÎ ¹ö±×¸¦ °¡Áú ¼ö ÀÖ°Ô µÇ¾î ÀÖÁÒ. »ç¿ëÇÒ ¶§ Á¶½ÉÇØ¾ß °Ú½À´Ï´Ù. :)


3.¿¹Á¦




// ¾Æ·¡ÀÇ ¿¹Á¦´Â SendMessageTimeout ÀÌ ½ÇÆÐÇÒ °æ¿ì 

// ¾ðÁ¦³ª ERR_UI_IS_HUNG ¸¦ ¸®ÅÏÇÏ°Ô µË´Ï´Ù. 



LRESULT lRes = SendMessageTimeout(hUIWnd, WM_USER_NEEDNEXTPACKET, 

                  0, (LPARAM)pDataPacket, SMTO_BLOCK, 10000, &pdwRes); 



_ASSERTE( FALSE != lRes ); 



if ( 0 == lRes ) 

{ 

    // ¸¶Áö¸· Error °ªÀ» ±¸ÇÕ´Ï´Ù. 

    DWORD dwLastErr = GetLastError(); 

    if ( 0 == dwLastErr ) 

        // time out ¿¡·¯ÀÔ´Ï´Ù. 

        return ( ERR_UI_IS_HUNG ); 

    return ( ERR_INVALID_DATA ); 

} 



return ( ERR_SUCCESS ); 





- 2001.08.13 Smile Seo -