[英]How to extract RGB value from COLORREF in MFC?
实际上,我正在尝试从 COLORREF 中提取 RGB 值,但没有得到 0 到 255 范围内的值。相反,我总是得到一些字符串。 例如:0000017153665268我使用了以下方法:
COLORREF obj_Colorref = obj_CColorDialog.GetColor();
RGBTRIPLE rgb;
rgb.rgbtRed = GetRValue(obj_Colorref);
rgb.rgbtGreen = GetGValue(obj_Colorref);
rgb.rgbtBlue = GetBValue(obj_Colorref);
CString sRed;
CString sGreen;
CString sBlue;
sRed.Format(L"%d", rgb.rgbtRed);
sGreen.Format(L"%d", rgb.rgbtGreen);
sBlue.Format(L"%d", rgb.rgbtBlue);
std::ofstream file;
file.open("..//Projects//Ribbon//x64//color.txt");
file << "#"<<"\n"<<"#"<< sRed << ",";
file << sGreen << ",";
file << sBlue << ",";
请帮帮我。
问题在于:
file << "#"<<"\n"<<"#"<< sRed << ",";
file << sGreen << ",";
file << sBlue << ",";
它将基于wchar_t
的CString
打印到基于char
的 stream。
wchar_t*
不会作为字符串打印到basic_ostream<char>
中。
最简单的修复方法可能是完全避免使用CString
:
file << std::to_string((int)rgb.rgbtBlue) << ",";
甚至可能:
file << (int)rgb.rgbtBlue << ",";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.