WinAPI. Перенос строки в DrawText

128
31 марта 2021, 00:10

Есть окно, которое выводит конвертированную переменную int в строку, и все это повторяется в цикле (Должно быть 10 строк одной под другой). Код выглядит так:

RECT rc;
HDC dcc = GetDC(global::hwndGeneral);
GetClientRect(global::hwndGeneral, &rc);
SetBkMode(dcc, TRANSPARENT);
SetTextColor(dcc, RGB(0, 0, 255));
for (int i = 0; i < 10; i++)
{
    std::string x1 = std::to_string(math::vectorline[i].x1);
    std::string y1 = std::to_string(math::vectorline[i].y1);
    std::string x2 = std::to_string(math::vectorline[i].x2);
    std::string y2 = std::to_string(math::vectorline[i].y2);
    std::string n = std::to_string(i);
    std::string hd = n + " Line: A(" + x1 + "," + y1 + ") B(" + x2 + "," + y2 + ") ; ";

    TCHAR* b = 0;
    b = new TCHAR[hd.size() + 1];
    copy(hd.begin(), hd.end(), b);
    b[hd.size()] = 0;

    DrawText(dcc, (LPCWSTR)b, -1, &rc, DT_MODIFYSTRING | DT_PATH_ELLIPSIS);
    //DrawText(dcc, (LPCWSTR)intToCHAR(math::vectorline[0].x2), -1, &rc, DT_MODIFYSTRING | DT_PATH_ELLIPSIS);
}
ReleaseDC(global::hwndGeneral, dcc);

Но проблема в том что текст лепится один поверх другого, и соответственно в конце ничего не понятно. Добавление символа переноса строки в массив TCHAR* b (b[hd.size()] = '\n') тоже не дает результата. Какие есть методы переноса строки в функции DrawText() ?

Answer 1

Сначала сделайте одну длинную строку с переносами, затем отрисуйте ее все одним вызовом DrawText. Как вариант, можно модифицировать rc, добавляя отступ сверху на каждой итерации.

Куча промежуточных строк не нужны. Динамически выделять b (который кстати потом не освобождается) не следует, как не следует и кастовать (LPCWSTR)b

READ ALSO
Зачем нужна условная компиляция?

Зачем нужна условная компиляция?

Она позволит включать различные части кода программы во время компиляции, отладки или непосредственно выполнения?

95
С++ Передать в качестве компаратора метод

С++ Передать в качестве компаратора метод

Как в качестве компаратора отправить метод из класса?

102
Как отметить радио в добавленном элементе?

Как отметить радио в добавленном элементе?

в документ добавился html с radiobutton таким образом:

135
Как переделать это код на vue js? [дубликат]

Как переделать это код на vue js? [дубликат]

Есть код на jquery который при клике на элемент меняет значение display другого элемента:

115