Страница 1 из 2

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

Добавлено: 07 июл 2006, 18:26
Vet_chv
Продолжаю изучать возможности функции DrawText. Пытаюсь изменить атрибуты текста. Возможно ли это сделать используя данную функцию? Если нет, то какой альтернативный вариант? И ещё, DrawText дает свой фон, как можно от этого избавиться (чтобы выводился чисто текст)? Подскажите пожалуйста. :(

Добавлено: 07 июл 2006, 19:15
Vet_chv
Под атрибутами текста я имею в виду размер, и не пойму как указать несколько параметров для форматирования текста. Потому что flags:= (параметр1, параметр2, ...); - не проходит.

Добавлено: 07 июл 2006, 20:21
Eugie
Vet_chv, я уже приводил пример вызова DrawText(), в т.ч. как задавать размер прямоугольника, куда вписывается текст (см. forum/topic6751.html ). Что непонятно?
Насчет фона, есть такая функция SetBkMode(), используй в ней режим TRANSPARENT (см. http://msdn.microsoft.com/library/defau ... w_47hh.asp )

Добавлено: 12 июл 2006, 14:31
Romeo
Flag - это параметр функции содержащий логическое пересечение параметров. Другими словами для того, что передать в качестве Flag несколько параметров, нужно перечислить их через логическое ИЛИ (or - в Паскаль подобных языках, | - в С подобных).

Добавлено: 12 июл 2006, 15:29
Eugie
только не пересечение, а объединение :)

Добавлено: 12 июл 2006, 15:57
Romeo
Мдаа. Не сосредоточенно ответил :)

Добавлено: 12 июл 2006, 19:42
Vet_chv
Спасибо, за ответы. Я тут поэксперементировал, у меня знаком + получается (компилятор не ругается). А вот насчёт форматирования текста вижу глубину неизмеримую (по моему слишком мудрено описано всё это в хэлпе Делфи).

Добавлено: 12 июл 2006, 19:49
Romeo
Плюс не подходит. Ты получишь совсем не то, что требуется. В Делфи используй or.

Добавлено: 13 июл 2006, 09:31
BBB
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
Видно, что все значения таковы, что в двоичной форме содержат лишь одну единичку в каком-то одном разряде.

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