[英]How to extract RGB value from COLORREF in MFC?
Actually i am trying to extract RGB value from COLORREF but not getting Value in range of 0 to 255. Instead of that i am getting some string always.实际上,我正在尝试从 COLORREF 中提取 RGB 值,但没有得到 0 到 255 范围内的值。相反,我总是得到一些字符串。 eg:0000017153665268 i used below method:例如: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 << ",";
please help me out.请帮帮我。
The problem is with this:问题在于:
file << "#"<<"\n"<<"#"<< sRed << ",";
file << sGreen << ",";
file << sBlue << ",";
It prints wchar_t
based CString
to char
-based stream.它将基于wchar_t
的CString
打印到基于char
的 stream。
wchar_t*
does not print as string into basic_ostream<char>
. wchar_t*
不会作为字符串打印到basic_ostream<char>
中。
Easiest way to fix is probably to avoid CString
altogether:最简单的修复方法可能是完全避免使用CString
:
file << std::to_string((int)rgb.rgbtBlue) << ",";
Or maybe even:甚至可能:
file << (int)rgb.rgbtBlue << ",";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.