将COLORREF转换为const char

时间:2011-09-09 15:42:52

标签: c++ mfc

如何将值从COLORREF转换为const char。目前我尝试按原样使用变量,但是我的编译器出现以下错误。

错误106错误C2664:'HC_Set_Color':无法将参数1从'COLORREF'转换为'const char *'c:\ b_gdm_src_wtx \ gdm_pda \ src \ gdmsmallsampledlg3d.cpp 2289

感谢。

2 个答案:

答案 0 :(得分:2)

您可以选择一个并返回如下字符串表示:

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自己的代表,但请记住相应地调整缓冲区的大小。

答案 1 :(得分:1)

假设这是您要遵循的规范:set_color.html#g406b806a5ed60dd9950fb12b0ce2077c“&gt; http://www.openhsf.org/docs_hsf/Hoops3DGS/hc_ref_manual/group_ 设置 _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());