C++ 字符串表RGB值
我在项目中使用字符串表,我想在其中存储RGB值。如何将加载字符串字符中的rgb值转换为可用于CreateSolidBrush的COLORREF的值。根据MSDNC++ 字符串表RGB值,c++,C++,我在项目中使用字符串表,我想在其中存储RGB值。如何将加载字符串字符中的rgb值转换为可用于CreateSolidBrush的COLORREF的值。根据MSDNCOLORREF是一个DWORDtypedef。所以COLORREF cRef=RGB(0,0,0)也是有效的。据我所知,你想做的是: const char *szTable[] = { "RGB( 255, 255, 255)", "RGB( 255, 0, 255)" }; //etc COLORREF dwMyColor = szT
COLORREF
是一个DWORD
typedef。所以COLORREF cRef=RGB(0,0,0)代码>也是有效的。据我所知,你想做的是:
const char *szTable[] = { "RGB( 255, 255, 255)", "RGB( 255, 0, 255)" }; //etc
COLORREF dwMyColor = szTable[0];
从字符串表中获取COLORREF
对象。我认为这是您应该做的,而不是字符串表:
COLORREF dwColor1 = RGB( 255, 0, 255 );
COLORREF dwTable[] = { 0xff00ff00, 0xffffffff, dwColor1 };
为什么需要字符串表来存储RGB值?它不够清晰,我想我是用以下方法弄明白的:
LoadString(g_hInstance,IDS_STRING151,rBuffer,256);
LoadString(g_hInstance,IDS_STRING152,gBuffer,256);
LoadString(g_hInstance,IDS_STRING153,bBuffer,256);
int r,g,b;
if(EOF == sscanf_s(rBuffer, "%d", &r))
{
//error
}
if(EOF == sscanf_s(gBuffer, "%d", &g))
{
//error
}
if(EOF == sscanf_s(bBuffer, "%d", &b))
{
//error
}
是否需要将字符串转换为整数?是的,类似于clrbuffer=“RGB(255255255)”的内容已转换为与CreateSolidBrush(clrbuffer)一起使用。除了“RGB(255,255255)”是整数值,而不是字符串之外,有些东西不太清楚。这些字符串来自哪里,您可以自由选择最容易转换的格式吗?字符串来自字符串表资源,将通过LoadString(g_hInstance、IDS_STRING150、clrBuffer等)使用;clrBuffer是我遇到麻烦的地方,只是我正在处理的一个项目要求我使用字符串表,而不是使用CreateSolidBrush(RGB(255255));