Debugger писал(а):Для текста разного размера я использую CreateFontIndirect и SelectObject.
Да.Debugger писал(а):Все таки, мне интересно, почему этот код не работает.
А WM_SETFONT - это SendMessage, да?
Debugger писал(а):Все таки, мне интересно, почему этот код не работает.
dr.MIG писал(а):В прикреплённом примере не хватает модулей mdlFontIndirect и mdlFont, поэтому проверить работоспособность не представляется возможным.
Viper писал(а):Да.Debugger писал(а):А WM_SETFONT - это SendMessage, да?
Debugger писал(а):З.Ы. Отлавливая все события, которые отправляются к текстбоксу (вызывал txt.FontSize=20 и смотрел, что получится), я натолкнулся на события с кодом &H281 (WM_IME_SETCONTEXT) и с кодом &H100E (название его константы я не нашел). Можете объяснить, что делает первое и второе?
То есть сообщение посылается приложению при активации окна.MSDN писал(а):WM_IME_SETCONTEXT Sent to an application when a window is activated. A window receives this message through its WindowProc function.
Ну да. Я так и делаю:Потому что и не должен: GetDC/SelectObject положено вызывать непосредственно при отрисовке, а не для задания долгосрочных свойств.
SetIndirectFont FNT, GetDC(Form1.txt.hwnd)
TextOut GetDC(Form1.txt.hwnd), 0, 0, "123", 3
Debugger писал(а):Ну да. Я так и делаю:Потому что и не должен: GetDC/SelectObject положено вызывать непосредственно при отрисовке, а не для задания долгосрочных свойств.
- Код: Выделить всё
SetIndirectFont FNT, GetDC(Form1.txt.hwnd)
TextOut GetDC(Form1.txt.hwnd), 0, 0, "123", 3
Case WM_CHAR
Dim hDC As Long
hDC = GetWindowDC(Form1.pct.hwnd)
SetIndirectFont FNT, hDC
DrawText hDC, "123", 3, r, 0
With Form1.txt
.SelText = Chr(wParam)
End With
TextOut hDC, 0, 0, Form1.txt.Text, Len(Form1.txt.Text)
.SelText = Chr(wParam)
Сейчас этот форум просматривают: AhrefsBot и гости: 21