Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / CreateWindow и шрифт компонентов / 8 сообщений из 8, страница 1 из 1
24.04.2005, 20:56
    #33032351
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
Весь инет облазил в поисках ответа на вопрос, но так и не нашел его.

При создании Button'а, Edit'а и других компонентов с помощью CreateWindow у них шрифт выставляется как System.

После этого нужно сделать SendMessage(handle, WM_SETFONT, ..., 0), а какой шрифт использовать, чтоб был как по умолчанию в Windows?

Варианты типа CreateFont(......, "Tahoma") и даже GetStockObject(DEFAULT_GUI_FONT) не предлагать: все они очень правдоподобны, но неизвестно какой шрифт будет стоять у пользователя...
...
Рейтинг: 0 / 0
25.04.2005, 02:20
    #33032470
XED
XED
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
хе-хе...
я два месяца с подобной проблемой парился... в итоге оставил системный шрифт - некрасиво, но главное пашет...
можешь попробовать с помощью чего-нить типа SystemParametersInfo попробовать изменить вообще системный шрифт (сам не пробовал - тока щас идея пришла в голову), но даже если и получится, то саму систему можно "испохабить"

а вообще если кто скажет, как эту фигню замутить, то я тоже буду очень благодарен...
...
Рейтинг: 0 / 0
25.04.2005, 10:17
    #33032674
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
ШогалПри создании Button'а, Edit'а и других компонентов с помощью CreateWindow у них шрифт выставляется как System.

После этого нужно сделать SendMessage(handle, WM_SETFONT, ..., 0), а какой шрифт использовать, чтоб был как по умолчанию в Windows?


System и есть шрифт по умолчанию.

Шогал
Варианты типа CreateFont(......, "Tahoma") и даже GetStockObject(DEFAULT_GUI_FONT) не предлагать: все они очень правдоподобны, но неизвестно какой шрифт будет стоять у пользователя...


Я что-то не понял, какой шрифт тебе нужен. Если тот, что "стоит в виндах" (в кавычкак потому что их там стоит много), то почему же ты возмущаешься , что он у каждого может быть любой. Если тебе нужен какой-то определенный - тогда возми и создай его CreateFont. Только потом удалить не забудь.
...
Рейтинг: 0 / 0
25.04.2005, 20:19
    #33034398
Астралопитек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
Вот PowerBuilder по умолчанию использует фонт Ариал. Не Тахому там всякую.
Может и вам попробовать? (Сам не проверял; у меня ДЛЛки на С++ если что печатают в экран чарез DC, по умолчанию получается Ариалом).
...
Рейтинг: 0 / 0
27.04.2005, 02:44
    #33037275
XED
XED
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
MasterZiv
Если тебе нужен какой-то определенный - тогда возми и создай его CreateFont. Только потом удалить не забудь.

Дык не работает! Ему напиливать какой ты тама шрифт создаёшь... Он может этим шрифтом чё-нить в окне написать, а вот батон с текстом этого шрифта не сделает! Обрати внимание, что в ресурсе для диалоговых окон это делается очень изящно и просто! Тогда и в ручную должно быть просто! Только КАК?
...
Рейтинг: 0 / 0
02.05.2005, 16:20
    #33044923
XED
XED
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
up
...
Рейтинг: 0 / 0
02.05.2005, 19:01
    #33045039
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
XEDДык не работает! Ему напиливать какой ты тама шрифт создаёшь... Он может этим шрифтом чё-нить в окне написать, а вот батон с текстом этого шрифта не сделает! Обрати внимание, что в ресурсе для диалоговых окон это делается очень изящно и просто! Тогда и в ручную должно быть просто! Только КАК?
По очерди проходишь по всем компонентам своего диалога и всем им посылаешь WM_SETFONT. Тупо и просто :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
	hFont = CreateFont(- 11 ,  0 ,  0 ,  0 ,  0 ,
		FALSE, FALSE, FALSE, DEFAULT_CHARSET,
		OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
		DEFAULT_PITCH,
		(LPCTSTR)"Arial");

	hRichEdit = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		"RICHEDIT", "",
		WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL |
			ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN,
		 1 , 1 , 50 , 100 ,
		hwnd, NULL,
		(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
		NULL);
	SendMessage(hRichEdit, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);

	hButton = CreateWindow("BUTTON", "Abort", 
		WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_CENTER | BS_VCENTER,
		 0 ,  0 ,  10 ,  10 , hwnd, NULL, hInstance, NULL);
	SendMessage(hButton, WM_SETFONT, (WPARAM)hFont, (LPARAM)TRUE);

А имя какого-нибудь сто процентов существующего шрифта ты можешь узнать через GetTextFace если дашь ему в качестве hdc ну например hdc десктопа :)
Еще проще можно указать в CreateFont fdwPitchAndFamily= DEFAULT_PITCH | FF_SWISS, и lpszFace=NULL. Тогда система сама выберет первый зарегестрированный шрифт семейства.
Либо используешь EnumFontFamilies и сам выбираешь нужный шрифт.
...
Рейтинг: 0 / 0
03.05.2005, 03:24
    #33045267
XED
XED
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
CreateWindow и шрифт компонентов
Хм...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / CreateWindow и шрифт компонентов / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]