C++ 字符串表RGB值

C++ 字符串表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

我在项目中使用字符串表,我想在其中存储RGB值。如何将加载字符串字符中的rgb值转换为可用于CreateSolidBrush的COLORREF的值。

根据MSDN
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));