MFCのCStringバージョン。
GetLastErrorの値を上書きされないために、変な宣言になってる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
CString GetLastErrorString(DWORD dwErrorNo, BOOL* pSeikou = NULL) { LPVOID lpMsgBuf = NULL; CString strRet; if( (0==FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS|FORMAT_MESSAGE_MAX_WIDTH_MASK, NULL, dwErrorNo, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL)) || lpMsgBuf==NULL ) { if(pSeikou) { *pSeikou = FALSE; } return strRet; } strRet = (LPTSTR)lpMsgBuf; LocalFree(lpMsgBuf); if (pSeikou) { *pSeikou = TRUE; } return strRet; } |
一部はMSのサイトに載ってたもので、詳しくは調べていない。