Изменение атрибутов текста, функция DrawText?

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Vet_chv
Сообщения: 17
Зарегистрирован: 16 июн 2006, 13:04
Контактная информация:

07 июл 2006, 18:26

Продолжаю изучать возможности функции DrawText. Пытаюсь изменить атрибуты текста. Возможно ли это сделать используя данную функцию? Если нет, то какой альтернативный вариант? И ещё, DrawText дает свой фон, как можно от этого избавиться (чтобы выводился чисто текст)? Подскажите пожалуйста. :(
Vet_chv
Сообщения: 17
Зарегистрирован: 16 июн 2006, 13:04
Контактная информация:

07 июл 2006, 19:15

Под атрибутами текста я имею в виду размер, и не пойму как указать несколько параметров для форматирования текста. Потому что flags:= (параметр1, параметр2, ...); - не проходит.
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

07 июл 2006, 20:21

Vet_chv, я уже приводил пример вызова DrawText(), в т.ч. как задавать размер прямоугольника, куда вписывается текст (см. forum/topic6751.html ). Что непонятно?
Насчет фона, есть такая функция SetBkMode(), используй в ней режим TRANSPARENT (см. http://msdn.microsoft.com/library/defau ... w_47hh.asp )
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 июл 2006, 14:31

Flag - это параметр функции содержащий логическое пересечение параметров. Другими словами для того, что передать в качестве Flag несколько параметров, нужно перечислить их через логическое ИЛИ (or - в Паскаль подобных языках, | - в С подобных).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Eugie
Сообщения: 707
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

12 июл 2006, 15:29

только не пересечение, а объединение :)
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 июл 2006, 15:57

Мдаа. Не сосредоточенно ответил :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Vet_chv
Сообщения: 17
Зарегистрирован: 16 июн 2006, 13:04
Контактная информация:

12 июл 2006, 19:42

Спасибо, за ответы. Я тут поэксперементировал, у меня знаком + получается (компилятор не ругается). А вот насчёт форматирования текста вижу глубину неизмеримую (по моему слишком мудрено описано всё это в хэлпе Делфи).
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 июл 2006, 19:49

Плюс не подходит. Ты получишь совсем не то, что требуется. В Делфи используй or.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

13 июл 2006, 09:31

Romeo писал(а):Плюс не подходит. Ты получишь совсем не то, что требуется. В Делфи используй or.
Если подходить логически, то "+", конечно, не правильно, но практически - прокатит. Дело в том, что значения тех флагов таковы, что для ТАКИХ ЗНАЧЕНИЙ арифметичекий "+" и логическое побитовое сложение дадут одинаковый результат :)

Код: Выделить всё

#define DT_CENTER           0x00000001
#define DT_RIGHT            0x00000002
#define DT_VCENTER          0x00000004
#define DT_BOTTOM           0x00000008
#define DT_WORDBREAK        0x00000010
#define DT_SINGLELINE       0x00000020
#define DT_EXPANDTABS       0x00000040
#define DT_TABSTOP          0x00000080
#define DT_NOCLIP           0x00000100
#define DT_EXTERNALLEADING  0x00000200
#define DT_CALCRECT         0x00000400
#define DT_NOPREFIX         0x00000800
#define DT_INTERNAL         0x00001000
Видно, что все значения таковы, что в двоичной форме содержат лишь одну единичку в каком-то одном разряде.
Vet_chv
Сообщения: 17
Зарегистрирован: 16 июн 2006, 13:04
Контактная информация:

13 июл 2006, 10:31

Спасибо за все ответы, приятно просвещаться :-). Я попытался поискать инфо о форматировании текста (размер, остальные атрибуты) в хэлпе Делфи - мудрено как-то, тяжело понять как это всё воплотить. Если не затруднит, объясните пожалуйста (примером с небольшими пояснениями) как задавать атрибуты текста. Спасибо за помощь. Всегда рад ответам-советам!
Ответить