Смена шрифта в ТекстБоксе через API

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Смена шрифта в ТекстБоксе через API

Сообщение A.A.Z. » 20.02.2004 (Пт) 23:40

Почему не работает этот код??
Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Private Const WM_FONTCHANGE = 29

Private Sub Command1_Click()
Dim Font As New StdFont
Set Font = New StdFont
Font.Name = "Arial"
Font.Size = 14
Font.Bold = True
SendMessage Text1.hwnd, WM_FONTCHANGE, 0&, Font
Set Font = Nothing
End Sub

Не пойму! :(
Нет меня больше

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.02.2004 (Сб) 10:30

Уууууууууу....
УУУ!!!
:lol:
A.A.Z., ты снова красавец! Срочно читай!
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 21.02.2004 (Сб) 21:34

:D
Надо будет научиться пользоваться MSDN...
Решил я эту проблему, правда, мигает всё равно... :?
Нет меня больше

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 22.02.2004 (Вс) 17:26

Я писал(а):Решил я эту проблему, правда, мигает всё равно...

Это был вопрос! :)
Как сделать смену шрифта (при _MouseMove) без мерцания? :?:
Нет меня больше

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.02.2004 (Вс) 17:51

Что значит мерцание? Перерисовка?
Это невозможно, если ты меняешь шрифт, то должен обязательно перерисовать текстбокс, чтобы отобразить изменения.
Другое дело, что можно (и нужно) исключать повторную перерисовку. Например так:
Код: Выделить всё
Option Explicit
...
Private SelFont As Boolean
...
Private Sub Form_MouseMove(...)
  If Not SelFont Then
    With Text1.Font
      ...
    End With
    SelFont = False
  End If
End Sub

Private Sub Text1_MouseMove(...)
  If SelFont Then Exit Sub
  With Text1.Font
    ...
  End With
  SelFont = True
End Sub


В принципе, можно обойтись и без флаговой переменной. Если у тебя в fnt1 это фонт по умолчанию, а fnt2 это фонт, когда курсор наведен на текстбокс, то проверка может выглядеть так:
Код: Выделить всё
If Text1.Font Is fnt1 Then Set Text1.Font = fnt2


Только это гораздо медленнее, чем с использованием флаговой переменной.
Lasciate ogni speranza, voi ch'entrate.

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 22.02.2004 (Вс) 17:55

Ладно, спасибо, попробую...
Нет меня больше


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 13

    TopList