c++ - 将 COLORREF 转换为 const char

标签 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

谢谢。

最佳答案

你可以取一个并返回这样的字符串表示:

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

关于c++ - 将 COLORREF 转换为 const char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7364155/

相关文章:

c++ - MFC编程中BEGIN_MESSAGE_MAP、END_MESSAGE_MAP可以为空吗?

c++ - 如何使用自定义位图将复选框添加到 MFC 中的工具栏?

c++ - MFC CFileDialog 在用户上次运行时选择的位置打开

c++ - 在资源文件中查找控件

c++ - 函数指针和访问——为什么这段代码是合法的?

c++ - 可以(重新)分配来自不同容器的迭代器吗?

c++ - 解压缩二进制文件时错误的 EOF

c++ - 我可以禁用菜单栏上的菜单项和/或动态显示它吗?

c++ - 如何将函数参数传递给 boost::thread_groups::create_thread()

c++ - MFC 工具栏图标的颜色深度更高?