Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поменять размер шрифта у CEdit, SetFont не хочет... 
:(
    Опции темы
Dreamer_0x01
Дата 4.12.2005, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Мне нужно сделать достаточно крупный СEdit и в нем - крупные цифры.
Пытаюсь использовать для этого SetFont - меняется только тип шрифта, но не его размер. Более того, если шрифт делать маленьким, то он выводится все равно такого же размера, но какой-то "обрезанный".
Я конечно понимаю, что можно написать свой класс, в котором все нарисовать в графическом контексте устройства, но уж больно лениво извращаться.


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Dray
Дата 4.12.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Материалист
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 7.10.2003
Где: г. Всеволожск

Репутация: 2
Всего: 6



Если использовать вместо CEdit'a CRichEdit то вот этот код работает:
Код

CFont *font = new CFont;
font->CreateFont (
    20,                        // nHeight
    0,                         // nWidth
    0,                         // nEscapement
    0,                         // nOrientation
    FW_NORMAL,                 // nWeight
    FALSE,                     // bItalic
    FALSE,                     // bUnderline
    0,                         // cStrikeOut
    ANSI_CHARSET,              // nCharSet
    OUT_DEFAULT_PRECIS,        // nOutPrecision
    CLIP_DEFAULT_PRECIS,       // nClipPrecision
    DEFAULT_QUALITY,           // nQuality
    DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
    "Arial");                 // lpszFacename
m_RichEdit.SetFont (font);

Где m_RichEdit - переменная типа control для RichEdit'a.
И еще чтобы использовать RichEdit нужно вызвать фуекцию AfxInitRichEdit перед показом окна с RichEdit'ом.


--------------------
忍者

user posted image
PM MAIL   Вверх
Dreamer_0x01
Дата 4.12.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Такс, щас попробуем!


Цитата(Dray @ 4.12.2005, 15:26)
чтобы использовать RichEdit нужно вызвать фуекцию AfxInitRichEdit

Само собой, эт знаем ;)



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
JoyEx
Дата 4.12.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Код

    CFont f;
    f.CreatePointFont(-500/*tenths of a point*/, "Arial");
    GetDlgItem (IDC_EDIT1)->SetFont (&f);
    f.Detach ();



Detach() обязательно!



--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Guest
Дата 4.12.2005, 19:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Кромк того есть Microsoft form 2.0 editbox(ActiveX идет со студио стандартной комплектации) там он "очень похож" на edit box и там можна поставить и размер и цвет шрифта.
  Вверх
Dreamer_0x01
Дата 4.12.2005, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Dray
JoyEx

по "плюсу", выручили!
Добавлено @ 21:45
JoyEx

Что делает Detach(), почему DeleteObject() не достаточно?


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
JoyEx
Дата 4.12.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: 5
Всего: 12



Цитата(Dreamer_0x01 @ 4.12.2005, 21:38)
Что делает Detach(), почему DeleteObject() не достаточно?

Там немного не так было. CFont'вский деструктор удаляет шрифт, а EDIT потом рисует текст системным фонтом и свой курсор забывает уменьшить. Detach() "отсоединяет" Windows'ский обьект от CFont'a



--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Earnest
Дата 4.12.2005, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(JoyEx @ 4.12.2005, 17:11)
Detach() обязательно!

Цитата(JoyEx @ 4.12.2005, 22:02)
Detach() "отсоединяет" Windows'ский обьект от CFont'a

Тогда уж правильнее фонт хранить в своем классе - удалять-то его кто-то должен после использования? А то можешь получить утечку GDI-ресурсов.

А вообще-то поменять фонт можно еще в обработчике сообщении WM_CTLCOLOR. Один из параметро - это hDC, вот ему и вставляется новый фонт. Правда, не совсем уверена, что именно для эдита это срабатывает. Тоже, фонт нужно создать и хранить, а потом уничтожить.

А еще одна твоя тема про грязь - это оттуда же? Не после RichEdit пошла?

Это я к тому, что, если это те же окошки, что в посте про грязь, то использование рич-эдита - это, прямо скажем, из пушки по воробьям. Круче разве что ActiveX туда подсунуть. smile

Это сообщение отредактировал(а) Earnest - 4.12.2005, 22:37


--------------------
...
PM   Вверх
Dreamer_0x01
Дата 4.12.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



Цитата(Earnest @ 4.12.2005, 22:33)
А еще одна твоя тема про грязь - это оттуда же? Не после RichEdit пошла?


Да, это те же самые окошки,но вот как ни странно, RichEdit такой болезнью не страдает.



--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Earnest
Дата 4.12.2005, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Цитата(JoyEx @ 4.12.2005, 22:02)
CFont'вский деструктор удаляет шрифт, а EDIT потом рисует текст системным фонтом и свой курсор забывает уменьшить

Может, это ответ?



--------------------
...
PM   Вверх
Dreamer_0x01
Дата 4.12.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 12



скорее всего.


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Finalist
Дата 14.6.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 23.5.2006

Репутация: нет
Всего: 1



 smile 
вопрос.....
мне надо в эдите сменить шрифт текста который будет вводится далее,
а тот что уже введен должен остаться неизменным.. ну вобщем как в любом редакторе...
или например сменить шрифт только выделенного текста...
а у меня получается поменять только весь текст...  
PM MAIL   Вверх
Coocky
Дата 14.6.2006, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата(Dreamer_0x01 @  4.12.2005,  14:44 Найти цитируемый пост)
Мне нужно сделать достаточно крупный СEdit и в нем - крупные цифры.
Пытаюсь использовать для этого SetFont - меняется только тип шрифта, но не его размер. Более того, если шрифт делать маленьким, то он выводится все равно такого же размера, но какой-то "обрезанный".

Угу smile  Эх... Гибнут С++ програмисты гибнут smile 
 Все, неверное локально создаем smile smile  используем и тут же уничтажаем. И все это, 100% еще и в OnInitDialog  smile  smile 
Цитата(Dray @  4.12.2005,  15:26 Найти цитируемый пост)
Если использовать вместо CEdit'a CRichEdit то вот этот код работает:


Цитата(Guest @  4.12.2005,  19:37 Найти цитируемый пост)
Кромк того есть Microsoft form 2.0 editbox(ActiveX идет со студио стандартной комплектации) там он "очень похож" на edit box и там можна поставить и размер и цвет шрифта.

 smile 
А может вообще опустить и перейти на Delphi ? smile  А может скачать дополнительные библиотеки? 
А может вообще сделать свой блокнот размером в 500Мб ради одного шрифта? smile 
Писал 100 раз 100 топиков про локальные обьекты в
 OnInitDialog()-нет, все по барабану!!! smile 
И потом и битмапы не грузятся и шрифты не устанавливаются.. smile 


Цитата(Earnest @  4.12.2005,  22:33 Найти цитируемый пост)
А вообще-то поменять фонт можно еще в обработчике сообщении WM_CTLCOLOR. Один из параметро - это hDC, вот ему и вставляется новый фонт. Правда, не совсем уверена, что именно для эдита это срабатывает. Тоже, фонт нужно создать и хранить, а потом уничтожить.

 

Earnest,  ну если и ты туда же... smile  smile 
Впрочем, может я не прав, а потому даю пример со шрифтом а ля 50 и подчеркнутым и жирным smile  smile

Добавлено @ 15:06 
Цитата(Finalist @  14.6.2006,  13:00 Найти цитируемый пост)
или например сменить шрифт только выделенного текста...
а у меня получается поменять только весь текст...


Только CRichEdit ! Он специально для форматирования текста!
Пример-Блокнот- CEdit
WordPad- CRichEdit 

Присоединённый файл ( Кол-во скачиваний: 26 )
Присоединённый файл  Edit.rar 43,25 Kb


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Earnest
Дата 14.6.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Coocky, ну чего ты разбушевался?  smile  smile  smile 
На любые пироги существует больше одного рецепта...
Темка-то старая довольно.
 


--------------------
...
PM   Вверх
Coocky
Дата 14.6.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 25
Всего: 62



Цитата(Earnest @  14.6.2006,  16:01 Найти цитируемый пост)
Coocky, ну чего ты разбушевался?

 smile 
Дык пишу...пишу... smile  Все зря. smile 
Яж мзду не беру! Мне за державу обидно smile

Добавлено @ 16:26 
 smile 
Цитата(Earnest @  14.6.2006,  16:01 Найти цитируемый пост)
Темка-то старая довольно

Да не глянул я на дату smile 
Старею smile 
 


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.