将 COLORREF 转换为 const char
Posted
技术标签:
【中文标题】将 COLORREF 转换为 const char【英文标题】:Convert a COLORREF to a const char 【发布时间】:2011-09-09 15:42:51 【问题描述】:如何将值从 COLORREF 转换为 const char。目前我尝试按原样使用该变量,但我的编译器出现以下错误。
错误 106 错误 C2664: 'HC_Set_Color' : 无法将参数 1 从 'COLORREF' 转换为 'const char *' c:\b_gdm_src_wtx\gdm_pda\src\gdmsmallsampledlg3d.cpp 2289
谢谢。
【问题讨论】:
您是否考虑过编译器会抱怨,因为 COLORREF 根本不是 const char,您不能像对待它一样对待它? 您想如何将其表示为字符串?COLORREF
是 DWORD
的 typedef,这是 unsigned long
最常见的 typedef。即使您使用了正确的演员表,将其表示为 const char*
也没有多大意义。
【参考方案1】:
你可以取一个并返回一个这样的字符串表示:
void COLORREF2string(COLORREF cr, char* buffer)
itoa(GetRValue(cr), buffer, 10);
buffer += strlen(buffer);
*buffer = ' ';
itoa(GetBValue(cr), buffer + 1, 10);
buffer += strlen(buffer);
*buffer = ' ';
itoa(GetGValue(cr), buffer + 1, 10);
然后像这样使用它:
COLORREF c = RGB(34, 54, 12);
char buf[16]; // 16 is big enough to hold any possible RGB combination
// with spaces between the numbers
COLORREF2string(c, buf);
cout << buf << endl;
哪个会打印
34 54 12
如果您愿意,您可以自己将其设置为像R: x B: x G: x
这样的更高级的表示,但请记住相应地调整缓冲区的大小。
【讨论】:
【参考方案2】:假设这是您要遵循的规范:set_color.html#g406b806a5ed60dd9950fb12b0ce2077c">http://www.openhsf.org/docs_hsf/Hoops3DGS/hc_ref_manual/group_set_color.html #g406b806a5ed60dd9950fb12b0ce2077c
您需要一个格式为“(r=0.5 g=1 b=0)”的字符串。这是获取它的一种方法:
COLORREF color = RGB(128,255,0);
stringstream ss;
ss << "(r=" << GetRValue(color)/255.0 << " g=" << GetGValue(color)/255.0 << " b=" << GetBValue(color)/255.0) << ")";
HC_Set_Color(ss.str());
【讨论】:
以上是关于将 COLORREF 转换为 const char的主要内容,如果未能解决你的问题,请参考以下文章