gpt4 book ai didi

c++ - 如何获取 DirectDraw Last 错误字符串(DirectX 7)

转载 作者:行者123 更新时间:2023-11-28 07:27:18 25 4
gpt4 key购买 nike

当我执行 DirectDraw 方法失败时,如何在 DirectX 7 中获取失败错误字符串?

if (FAILED(lpddPrimarySurface->SetPalette(lpddPalette)))
{
MessageBox(NULL, **"I want to get the failure string here."**, "Error", MB_OK);
return 0;
}

这里我想弹出失败信息的错误信息。如何获取错误的LPCSTR字符串?

最佳答案

对于 NTSTATUS 错误,可能出现以下情况。不确定这是否适用于 Direct Draw 和 Direct X HRESULT 错误代码,但它可能会像系统消息表中那样起作用。您不需要 ntdll 句柄,我认为也不需要,因为查找是在系统消息表上完成的。我已经指定它以防万一,因为我从未在没有它的情况下进行过测试。

请原谅静态字符数组,这只是为了展示示例,不是一个好的实现:)

static const char *NTStatusToString(DWORD NtStatusCode)
{
LPVOID lpMessageBuffer = 0;
HMODULE hNTDll = GetModuleHandle("ntdll.dll");
static char szBuffer[256];

FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_FROM_HMODULE,
hNTDll,
NtStatusCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &lpMessageBuffer,
0,
NULL);

memset(szBuffer, 0, sizeof(szBuffer));
_snprintf(szBuffer, sizeof(szBuffer)-1, "%s", lpMessageBuffer);

LocalFree(lpMessageBuffer);

return szBuffer;
}

这个线程表明它会起作用 How should I use FormatMessage() properly in C++?然而这个表明它不会Is there a way to get the string representation of HRESULT value using win API?你将不得不做比这更多的工作。

进一步阅读:hereherehere

关于c++ - 如何获取 DirectDraw Last 错误字符串(DirectX 7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18536154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com