0xAA55 发表于 2015-7-19 21:43:31

显示GetLastError()的错误描述字符串

void ShowLastError()
{
        LPVOID lpMsgBuf;
        FormatMessage
        (
                FORMAT_MESSAGE_ALLOCATE_BUFFER | //返回一个已分配的内存
                FORMAT_MESSAGE_FROM_SYSTEM |//系统消息
                FORMAT_MESSAGE_IGNORE_INSERTS, //无视插入信息
                NULL,
                GetLastError(),
                0, //默认语言
                (LPTSTR)&lpMsgBuf, //错误信息指针
                0,
                NULL
        );
        MessageBox(NULL,(LPCTSTR)lpMsgBuf,NULL,MB_OK|MB_ICONINFORMATION);
        LocalFree(lpMsgBuf);//释放内存
}

0x01810 发表于 2015-7-20 17:03:02

再补上个

int __cdecl MessageBoxPrintf (TCHAR * szCaption, TCHAR * szFormat, ...)
{
   TCHAR szBuffer;
   TCHAR *pArg1 = (TCHAR*)&szFormat + sizeof(szFormat);
   _vsnprintf(szBuffer, sizeof(szBuffer)/sizeof(TCHAR), szFormat, pArg1);
   return MessageBox (NULL, szBuffer, szCaption, MB_ICONINFORMATION);

}

0xAA55 发表于 2016-2-3 05:54:28

然而MessageBox(NULL(第一个参数为NULL)会使GetLastError()返回ERROR_CLASS_ALREADY_EXISTS。
所以为了防止出错,正确的做法是把第一个参数填为你创建的窗口。
页: [1]
查看完整版本: 显示GetLastError()的错误描述字符串