Самодельный Lable

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Самодельный Lable

Сообщение arthur2 » 20.06.2008 (Пт) 14:18

Хочу сделать уникодный лейбл.

Как вывести строку, понятно: TextOutW. А вот как её переписать, когда Caption меняется?

Интересно, как это происходит у настоящих лейблов?
Артур
 
   

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 20.06.2008 (Пт) 14:24

Интересно, как это происходит у настоящих лейблов?

Я конечно сам не хочу в это верить, но судя по тому, как иногда мерцают контролы в VB, подозреваю, что при помощи CLS
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.06.2008 (Пт) 14:42

А вот как её переписать, когда Caption меняется?

Делать TextOutW в _Paint, при изменении делать Refresh.
Денис писал(а):
Интересно, как это происходит у настоящих лейблов?

Я конечно сам не хочу в это верить, но судя по тому, как иногда мерцают контролы в VB, подозреваю, что при помощи CLS
Это мерцание как-то связано с манифестом. Скрее всего лабелы перерисовываются с помощью InvalidateRect.
Лучший способ понять что-то самому — объяснить это другому.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Сообщение arthur2 » 20.06.2008 (Пт) 15:34

Делать TextOutW в _Paint, при изменении делать Refresh.
А если AutoRedraw=true? И полный рефреш из-за одного лейбла - не слишком ли? Ведь мерцать же, наверное, будет?

Пойду поищу про InvalidateRect.
Артур
 
   

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 20.06.2008 (Пт) 15:39

Если AutoRedraw=true, то cls. Refresh я имел ввиду для лейбла, а не всей формы. Ты же юзерконтрол делаешь? Вот его и рефреш. Да и вместо Refresh лучше тот же InvalidateRect.
Лучший способ понять что-то самому — объяснить это другому.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Сообщение arthur2 » 20.06.2008 (Пт) 16:50

arthur2
Нет, я хотел как раз обойтись без юзерконтрола. Просто пишу прямо на форме.

В общем, да, InvalidateRect в связке с UpdateWindow отлично справляются... если не ауторедро :(

Но ведь обычные лейблы как-то перерисовываются и с этой ауторедрой? :)
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.06.2008 (Пт) 18:23

arthur2
У тебя организация-то вообще какая? Ты текст рисуешь где, в своём окне, или у тебя нет окна, и ты рисуешь на паренте?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Сообщение arthur2 » 20.06.2008 (Пт) 19:04

У моего лейбла нет окна - рисую прямо на форме. А у формы как раз ауторедро. Точнее, оно может оказаться ауторедро.

Вообще-то, я кажется смогу отказаться от автоперерисовки. Но и тогда остаётся проблема: когда рисую поверх какого-то Image, всё нормально рисуется. Но из события Form_Paint рисоваться уже не хочет (думаю, просто потому, что Image перерисовывается после, а значит поверх моего писания)
Артур
 
   

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Сообщение arthur2 » 21.06.2008 (Сб) 7:30

В общем, жуть с ружьём :(
Чтобы всё нормально заработало, пришлось и имеджи переписывать - тоже рисовать их прямо на форме :lol:

Ещё чуть-чуть, и у меня вообще всё рисованное будет...
Артур
 
   


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 67

    TopList