Как сделать так, чтобы каждая строка отображалась с новой строки?
int i = 1;
char *s = *environ;
for (; s; i++) {
DrawText(hdc, s, -1, &rect,
DT_WORDBREAK | DT_EDITCONTROL | DT_BOTTOM);
s = *(environ + i);
}
GetTextExtentPoint32()
иDrawText(DT_CALCRECT)
. Они будут измерять ограничивающую рамку строки, которую вы рисуете, поэтому, если подъем или спуск символов в одной переменной среды отличается, вы получите разную высоту строки. Другой способ — использоватьGetTextMetrics()
иTEXTMETRIC.tmHeight
. Это даст вам максимально возможную высоту строки для текущего выбранного шрифта. - person andlabs   schedule 09.12.2015DrawText()
для многострочного рисования). Вы также всегда можете просто создать комбинированную строку переменных среды, разделенных символами новой строки, но, не зная, какова ваша общая цель, я не уверен, что это хорошая идея. - person andlabs   schedule 09.12.2015DT_CALCRECT
так, как я только что указал, или он ведет себя какGetTextMetrics()
в случае одной строки? Кто-то, кто хочет пойти на это, должен будет проверить; Я всегда просто используюGetTextMetrics()
, так как на данный момент мне нужно заранее получить высоту строки в моих программах. (Это может измениться в будущем.) - person andlabs   schedule 09.12.2015GetTextExtentPoint32()
, но я не уверен. Также я не знаю, какой у вас компилятор, ноenviron
может работать некорректно перед значениями переменных среды Unicode... если это не так, вам нужно будет использоватьGetEnvironmentStringsW()
. - person andlabs   schedule 09.12.2015