Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > длина строки символов и ширина экрана


Автор: AxNe0 6.5.2006, 09:02
Доброго времени суток! Как можно найти длину символьной строки и ширину экрана в точках?
Заранее спасибо. 

Автор: CPlusPlusFAN 6.5.2006, 11:05
Цитата(AxNe0 @  6.5.2006,  09:02 Найти цитируемый пост)
Как можно найти длину символьной строки

Длину конкретной строки или длину, помещающуюся в ширину экрана?

В первом случае: int strlen(const char* str). 

Автор: AxNe0 6.5.2006, 13:33
и то, и другое, в зависимости, от длины строки (если помещается на экране, то первое, если не помещается, то второе) 
PS И то и другое, как я понимаю, надо находить в точках.. 

Автор: bsa 6.5.2006, 17:31
Какая ОС? Какой режим работы (графический или консольный)? 

Автор: nikitao 6.5.2006, 23:02
Не очень понял,но напишу.
Обычно консольное окно имеет размер 80*25 знакомест.Соответственно кол-во столбцов кот будет занимать твоя строка будет равна 
Код

int i=strlen(str)/85;

 

Автор: AxNe0 7.5.2006, 10:06
ось Win32, графический режим работы.
Длина нужна для того, чтобы размещать строку в окне и, соответственно, окно в экране.... 

Автор: CPlusPlusFAN 8.5.2006, 01:21
Шрифт какой? 

Автор: AxNe0 8.5.2006, 10:45
default,  

Автор: AxNe0 8.5.2006, 13:30
Немного по-другому ставлю вопрос  smile 
есть строка произвольной длины, ее надо отобразить в надписи следующим образом:
если помещается полностью  - хорошо smile
если не помещается в окне - растянуть окно,
если окно не помещается в экране - подогнать размер и обрезать строку по последнему помещающемуся слову...
 smile  

Автор: nikitao 8.5.2006, 14:13
AxNe0, ты вообще в чем работаешь(компелятор). smile  

Автор: AxNe0 8.5.2006, 22:56
Visual C++ 6.0 (если это требовалось  smile ) 

Автор: nikitao 8.5.2006, 23:16
Бррррррррррррррр.Так это тебе размеры строки на форме надо узнать что ли smile (Я то все время думал,что ты в каком-нибудь Turbo C++ работаешь  smile ) 

Автор: AxNe0 9.5.2006, 10:36
ага, имянно smile 

Автор: bsa 9.5.2006, 21:19
Заходишь на http://www.google.com и вводишь: "font string size pixel win32". Жмешь на "Поиск" и получаешь кучу ссылок.
А четвертая будет: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_8smq.asp 

Автор: nikitao 9.5.2006, 23:17
AxNe0, для программирования WinAPI n t Windows приложений есть специальная ветка smile  

Автор: Earnest 10.5.2006, 20:04
Цитата(AxNe0 @  8.5.2006,  14:30 Найти цитируемый пост)
если помещается полностью  - хорошо 
если не помещается в окне - растянуть окно,
если окно не помещается в экране - подогнать размер и обрезать строку по последнему помещающемуся слову...


1) GetTextExtentExPoint возвратит размер строки в логических координатах. Если у тебя режим не MM_TEXT, то переводи в пикселы: LPtoDp. Перед тем как звать  GetTextExtentExPoint, установи шрифт в контекст.
2) как растянуть окно, надеюсь, понятно
3) для вывода строки используем (можно добавить флажок DT_WORD_ELLIPSIS, чтобы на конце появилось многоточие, если строка обрезана). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)