C++ 如何转换GDI+;状态为字符串?

C++ 如何转换GDI+;状态为字符串?,c++,windows,gdi+,C++,Windows,Gdi+,事实上,这个主题。我还没有找到任何标准的方法将GDI+Status(GDI+方法返回的错误状态)转换为字符串,类似于FormatMessage()如果您想将中的标签转换为字符串,那么您可以做的最简单的事情是: const char* StatusMsgMap[] = { "Ok", //StatusMsgMap[Ok] = "Ok"; "GenericError", //StatusMsgMap[GenericError] = "Generi

事实上,这个主题。我还没有找到任何标准的方法将GDI+
Status
(GDI+方法返回的错误状态)转换为字符串,类似于
FormatMessage()

如果您想将中的标签转换为字符串,那么您可以做的最简单的事情是:

const char* StatusMsgMap[] = 
{
    "Ok",               //StatusMsgMap[Ok] = "Ok";
    "GenericError",     //StatusMsgMap[GenericError] = "GenericError";
    "InvalidParameter", //StatusMsgMap[InvalidParameter] = "InvalidParameter";
    "OutOfMemory",      //StatusMsgMap[OutOfMemory] = "OutOfMemory";
    //so on
};

//Usage:
 std::string error = StatusMsgMap[status]; // where status is Status type!
或者,如果您想要更具描述性的消息,则:

const char* StatusMsgMap[] =
{
    "the method call was successful",
    "there was an error on the method call, which is identified as something other than those defined by the other elements of this enumeration",
    "one of the arguments passed to the method was not valid",
    //so on
};

由于枚举中只有22个标签,因此在我看来,以上述方式创建一个
StatusMsgMap
不会有太多任务。5分钟就足够了

下面是我写的一些使用硬编码值的东西

std::string statusString(const Gdiplus::Status Status){
开关(状态){
case-Gdiplus::Ok:返回“Ok”;
案例Gdiplus::GenericError:返回“GenericError”;
案例Gdiplus::InvalidParameter:返回“InvalidParameter”;
案例Gdiplus::OutOfMemory:返回“OutOfMemory”;
case-Gdiplus::ObjectBusy:返回“ObjectBusy”;
案例Gdiplus::InsufficientBuffer:返回“InsufficientBuffer”;
案例Gdiplus::NotImplemented:返回“NotImplemented”;
案例Gdiplus::Win32Error:返回“Win32Error”;
案例Gdiplus::中止:返回“中止”;
案例Gdiplus::FileNotFound:返回“FileNotFound”;
案例Gdiplus::ValueOverflow:返回“ValueOverflow”;
case-Gdiplus::AccessDenied:返回“AccessDenied”;
case-Gdiplus::UnknownImageFormat:返回“UnknownImageFormat”;
案例Gdiplus::FontFamilyNotFound:返回“FontFamilyNotFound”;
案例Gdiplus::FontStyleNotFound:返回“FontStyleNotFound”;
案例Gdiplus::NotTrueTypeFont:返回“NotTrueTypeFont”;
case-Gdiplus::unsupportedglusversion:返回“unsupportedglusversion”;
案例Gdiplus::GdiplusNotInitialized:返回“GdiplusNotInitialized”;
案例Gdiplus::PropertyNotFound:返回“PropertyNotFound”;
案例Gdiplus::PropertyNotSupported:返回“PropertyNotSupported”;
默认值:返回“未找到状态类型。”;
}
}
使用方法如下:

const std::string statusMsg=statusString(状态);
//然后输出它。

std::cout是enum,而enum又是整数值。所以你基本上是在要求将整数转换成字符串,或者将枚举中的标签转换成字符串?我想这应该是一个编译时静态常量数组,而不是STL映射。状态值从0开始。@Sebastian:Oops。。。我刚做的。:-)5分钟?:)这些常数不太具有自描述性,因此我必须猜测它们的良好描述。据我所知,没有标准的方式来接收这些描述,对吗?@Andy:描述来自MSDN本身。你不必“猜”任何东西。每个枚举值都有特定的含义和信息;见此: