Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 08.04.2008
Сообщений: 132

Смена шрифта в заголовке окна

16.06.2011, 13:50. Показов 2589. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Privet, yesli u kogo idea na etu temu? Ili ssilochka?
Senks !!!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.06.2011, 13:50
Ответы с готовыми решениями:

Изменение шрифта в Заголовке формы и ToolTipText?
Привет всем! А как менять шрифт в Заголовке формы и ToolTipText? И ещё - как сделать, чтобы программа не зависила от системного шрифта...

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

Изменение шрифта в заголовке QGroupBox
Всем доброй пятницы! Пишу вот так ui->groupBox->setStyleSheet("QGroupBox { border: 1px solid gray;""border-radius: 3px;"...

9
0 / 0 / 0
Регистрация: 04.03.2008
Сообщений: 250
16.06.2011, 14:09
Мне кажется, кроме как через изменение оформления стиля Windows в целом трудно что-то сделать. Разве что какая-нибудь малоизвестная (для меня ))) API.
0
Comanche
16.06.2011, 14:23
Похоже, ты прав. Крайняк - можно нужным шрифтом (CreateFont, SelectObject) делать DrawText прямо по тайтл-бару - в оконной процедуре, при WM_NCPAINT или ещё когда. Но это изврат ))
2 / 2 / 1
Регистрация: 19.07.2007
Сообщений: 737
16.06.2011, 15:02
если уж так нужны сови собственные Caption-стили у окон, то убирай стандартный заголовок окна и рисуй свой, потом может и до скинов дорастет
0
0 / 0 / 0
Регистрация: 08.04.2008
Сообщений: 132
16.06.2011, 16:49  [ТС]
to Comanche:
yesli u tebya ssilochki na DrawText прямо по тайтл-бару
0
Comanche
16.06.2011, 17:28
Вот, накатал чего-то:

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Option Explicit
'
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
'
Private Declare Function CreateFont Lib 'gdi32.dll' Alias 'CreateFontA' (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
Private Declare Function MulDiv Lib 'kernel32' (ByVal nNumber As Long, ByVal nNumerator As Long, ByVal nDenominator As Long) As Long
Private Declare Function GetDeviceCaps Lib 'gdi32' (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function DeleteObject Lib 'gdi32.dll' (ByVal hObject As Long) As Long
Private Declare Function DrawText Lib 'user32.dll' Alias 'DrawTextA' (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, ByRef lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function SelectObject Lib 'gdi32.dll' (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function GetWindowDC Lib 'user32' (ByVal hWnd As Long) As Long
Private Declare Function GetSystemMetrics Lib 'user32' (ByVal nIndex As Long) As Long
Private Declare Function SetRect Lib 'user32.dll' (ByRef lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function GetDC Lib 'user32' (ByVal hWnd As Long) As Long
Private Declare Function SetBkMode Lib 'gdi32' (ByVal hdc As Long, ByVal nBkMode As Long) As Long
Private Declare Function SetTextColor Lib 'gdi32.dll' (ByVal hdc As Long, ByVal crColor As Long) As Long
'
Private Const SM_CYCAPTION = 4  ' Height of windows caption
Private Const SM_CXSIZE = 30    ' Width of title bar bitmaps
Private Const DT_LEFT As Long = &H0
Private Const FW_NORMAL = 400
Private Const LOGPIXELSY = 90
Private Const OUT_DEFAULT_PRECIS = 0
Private Const CLIP_DEFAULT_PRECIS = 0
Private Const DEFAULT_CHARSET = 1
Private Const PROOF_QUALITY = 2
Private Const DEFAULT_PITCH = 0
Private Const TRANSPARENT = 1
'
Private mDC As Long, hFont As Long
'
Private Sub Form_Load()
    ' hDC вместе с тайтл-баром:
    mDC = GetWindowDC(Me.hWnd)
    ' Будем использовать шрифт: Times New Roman, 11pt:
    hFont = CreateFont(-MulDiv(11, GetDeviceCaps(GetDC(0), LOGPIXELSY), 72), 0, 0, 0, FW_NORMAL, False, False, False, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, 'Times New Roman')
    SelectObject mDC, hFont
    ' Выводимый текст должен иметь прозрачный фон:
    SetBkMode mDC, TRANSPARENT
    ' Цвет шрифта пусть будет жёлтым:
    SetTextColor mDC, vbYellow
End Sub
'
Private Sub Form_Paint()
    ' Собственно перерисовка тайтл-бара:
    Call RedrawTitleBar('Просто какой-то текст в тайтл-баре')
End Sub
'
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    DeleteObject hFont
End Sub
'
Private Sub RedrawTitleBar(ByVal TbarText As String)
    Dim rct As RECT
    
    If Len(Me.Caption) > 0 Then
        ' 'Убиваем' заголовок формы, чтобы не мешал выводимому тексту:
        Me.Caption = ''
        ' Это неправильно, но быстро.
    End If
    
    SetRect rct, _
            GetSystemMetrics(SM_CXSIZE) + 6, _
            5, _
            Me.Width * Screen.TwipsPerPixelX, _
            GetSystemMetrics(SM_CYCAPTION)
    ' (константы 5 и 6 определил по
Comanche
16.06.2011, 17:32
Кстати, вызов SetRect тоже надо вынести в Form_Load (ну и, есс-с-сно, переменную rct объявить на уровне формы).
Comanche
16.06.2011, 21:22
Не-е-е... беру слова обратно: пусть вызов SetRect останется там, где он есть - ведь Me.Width может измениться (если форма - resizable).
Comanche
17.06.2011, 18:07
А вообще-то лучше использовать DrawTextEx с флажком DT_END_ELLIPSIS - ведь текст теоретически может не уместиться в тайтл-баре, и тогда - по аналогии с самими виндами - конец текста неплохо бы заменить на многоточие.
0 / 0 / 0
Регистрация: 08.04.2008
Сообщений: 132
19.06.2011, 08:21  [ТС]
To chto mne nujno, spasibo vsem !!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2011, 08:21
Помогаю со студенческими работами здесь

Изменение шрифта в заголовке формы
Подскажите, пожалуйста, можно ли изменить шрифт и его цвет в заголовке формы?

Изменить цвет шрифта в заголовке строк и столбцов в DGV
как изменить цвет в выделенной области: ...

C++ Builder 6: при увеличении шрифта в заголовке кнопки, он обрезается с трех сторон
Только начинаю свой путь Когда создаю Button и увеличиваю шрифт, то Caption обрезается, как я понимаю, слева, снизу и справа Почему...

Смена цвета через Cufon при активном заголовке
Использую плагин Cufon на сайте для аккордиона из примера: http://dbmast.ru/otzyvchivyj-akkordeon-s-pomoshhyu-jquery как сделать так чтобы...

Надпись на заголовке окна
Ребята, подскажите пожалуйста, как зная hwnd окна, узнать его надпись на заголовке (на шапке окна)?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru