powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / поменять шрифт у контрола с помощью MFC
4 сообщений из 4, страница 1 из 1
поменять шрифт у контрола с помощью MFC
    #33051656
Vicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток

Есть форма на которой есть пара комбобоксов. В них надо динамически поменять щрифт.

Проблема в том что когда я создаю свой шрифт и говорю myComboBox->SetFont(&myFont) то реально меняется только размер комбобокса а шрифт остается без изменений.
То есть если я указываю например Wingding 6 то вместо маленьких дурацких символов :) в маленьком комбобоксе получаю маленькой высоты комбобокс со шрифтом нормального размера вроде как Ариалом, причем строки не влазят по высоте в контрол и обрезаны снизу.

код выглялит так

Код: plaintext
1.
2.
3.
CDC* dc=GetDlgItem(IDC_STAKES)->GetDC();
CFont* font->CreatePointFont( 60 , "Wingdings", dc);
CFont* deffont=dc->SelectObject(font);
GetDlgItem(IDC_STAKES )->SetFont(font);

Кто-нибудь знает как все-таки установить фонт по-человечески ?
...
Рейтинг: 0 / 0
поменять шрифт у контрола с помощью MFC
    #33051774
Dubrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
CDC* dc=GetDlgItem(IDC_STAKES)->GetDC();  //Берем  control
CFont* font->CreatePointFont( 60 , "Wingdings", dc); //Создаем  шрифт
CFont* deffont=dc->SelectObject(font); //Делаем его активным
GetDlgItem(IDC_STAKES )->SetFont(font);  //... и устанавливаем
А где изменение размеров control-а под размер шрифта?
Предлагаю (но не факт) посмотреть еще GetTextExtent, а еще лучше поменять размер всего Dialog-а.
---
С уважением, Dubrov.
...
Рейтинг: 0 / 0
поменять шрифт у контрола с помощью MFC
    #33052005
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VicelПроблема в том что когда я создаю свой шрифт и говорю myComboBox->SetFont(&myFont) то реально меняется только размер комбобокса а шрифт остается без изменений.


Странно, должно быть ровно наоборот - поменяться шрифт и не поменяться размеры. Но в случае комбика размеры, а точнее высота, действительно должны поменяться (см. далее). Значит ты что-то делаешь не так как надо.

Код: plaintext
1.
2.
3.
4.
CDC* dc=GetDlgItem(IDC_STAKES)->GetDC(); // Это лишнее
CFont* font->CreatePointFont( 60 , "Wingdings", dc);
CFont* deffont=dc->SelectObject(font); // Это тоже лишнее
GetDlgItem(IDC_STAKES )->SetFont(font);
Подозреваю, что если убрать лишнее, все заработает.

Dubrov > А где изменение размеров control-а под размер шрифта?
А нет его и не должно быть. Дело в том, что виндовый контрол COMBOBOX
по сути не имеет высоты - его высота используется для указания высоты выпадающей части комбика (лист бокса), а в свернутом состоянии комбик определяет свою высоту динамически на основании размера шрифта, которым он работает. Т.е. если поставить другой размер шрифта будет и другая высота комбика. А вот с другими контролами Win32 этот фокус не пройдет - они свои размеры менять не будут, поэтому придется при установке шрифта еще и перевычислять размеры всех контролов и переразмещать их на диалоге.
...
Рейтинг: 0 / 0
поменять шрифт у контрола с помощью MFC
    #33053722
Vicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я с этого начинал :)
но поскольку все равно не работало то полез дальше.

менять размер шрифта у меня таки получилось
если
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	CDC* dc=control->GetDC();
	CFont* font=control->GetFont();
	
	LOGFONT lf;
	font->GetLogFont(&lf);
	lf.lfHeight = sizeinpixels;		

	font->CreateFontIndirect(&lf) ;
	
	dc->SelectObject(font);
	control->SetFont(font);
и комбобокс меняет размер как надо

но проблема все равно осталась - если я еще меняю название шрифта
strcpy(lf.lfFaceName, "Arial");
то шрифт в контроле как был так и остался тем же, изменился тока размер
хотя это передрано из msdn :(
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / поменять шрифт у контрола с помощью MFC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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