Как извлечь значение RGB из COLORREF в MF C? - PullRequest
0 голосов
/ 26 мая 2020

На самом деле я пытаюсь извлечь значение RGB из COLORREF, но не получаю Value в диапазоне от 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 << ",";

пожалуйста, помогите мне.

1 Ответ

1 голос
/ 27 мая 2020

Проблема заключается в следующем:

file << "#"<<"\n"<<"#"<< sRed << ",";
file << sGreen << ",";
file << sBlue << ",";

Он печатает wchar_t на основе CString в char поток.

wchar_t* не печатает как строку в basic_ostream<char>.

Самый простой способ исправить это, вероятно, полностью избежать CString:

file << std::to_string((int)rgb.rgbtBlue) << ",";

Или, может быть, даже:

file << (int)rgb.rgbtBlue << ",";
...