Как создать каждую строку из новой строки?WinAPI DrawText new line
int i = 1;
char *s = *environ;
for (; s; i++) {
DrawText(hdc, s, -1, &rect,
DT_WORDBREAK | DT_EDITCONTROL | DT_BOTTOM);
s = *(environ + i);
}
Как создать каждую строку из новой строки?WinAPI DrawText new line
int i = 1;
char *s = *environ;
for (; s; i++) {
DrawText(hdc, s, -1, &rect,
DT_WORDBREAK | DT_EDITCONTROL | DT_BOTTOM);
s = *(environ + i);
}
Вам нужно добавить символ новой строки '\n'
в конце каждой строки.
Исправления: Я думал, что все строки будут разыграны сразу ...
Возможно, вы должны удалить этот ответ. –
Используйте значение, возвращаемое функцией DrawText
(высота текста обращается), чтобы компенсировать прямоугольник для следующей строки текста.
int i = 1;
char *s = *environ;
for (; s; i++) {
int height = DrawText(hdc, s, -1, &rect,
DT_WORDBREAK | DT_EDITCONTROL | DT_BOTTOM);
OffsetRect(&rect, 0, height);
s = *(environ + i);
}
Uhm, перемещая прямоугольник назначения вниз для каждой новой строки. И сегодня ваш счастливый день, потому что кто-то даже реализовал функцию [OffsetRect] (https://msdn.microsoft.com/en-us/library/dd162746.aspx) для вас! – IInspectable
Если вы читаете то, что только что сказал Intpectable, я предполагаю, что следующий вопрос: «Как мне получить высоту линии, которую я только что рисовал». Ну, у вас есть три варианта. Первые два должны дать вам тот же результат: «GetTextExtentPoint32()» и «DrawText (DT_CALCRECT)». Они будут измерять ограничивающий прямоугольник строки, которую вы рисуете, поэтому, если всплытие или спуск символов в одной переменной среды отличается, вы получите разную высоту строки. Другой способ - использовать «GetTextMetrics()» и «TEXTMETRIC.tmHeight». Это даст вам максимально возможную высоту строки для выбранного в данный момент шрифта. – andlabs
Этот последний, вероятно, тот, на который нужно идти, поскольку вы получаете согласованную высоту строки (и эта высота строки, скорее всего, используется для рисования многострочного рисунка DrawText()). Вы также можете всегда создавать объединенную строку переменных среды, разделенных символами новой строки, но не зная, какова ваша общая цель. Я не уверен, что это хорошая идея. – andlabs