Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MFC и CFont... как сделать правильно? !прогрмма выполнила не доп. оп! 
:(
    Опции темы
NULL
  Дата 11.9.2003, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот код... и он не работает =(
Как это сделать правильно... если это не правильно...

Код

void CMyDlg::OnButtonfont()
{
      CFontDialog f_dlg;
      int b_id = f_dlg.DoModal();
      CFont* font = f_dlg.GetFont();
     
      if(b_id == IDOK) m_Edit.SetFont(font);
}

PM MAIL ICQ   Вверх
Baa
Дата 11.9.2003, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

CFontDialog f_dlg;

if(f_dlg.DoModal() == IDOK)
{
 LOGFONT lf;
 CFont font;
 f_dlg.GetCurrentFont(&lf);
 font.CreateFontIndirect(&lf);
 m_Edit.SetFont(&font);
 m_Edit.RedrawWindow();
}



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
RAN
Дата 11.9.2003, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 709
Регистрация: 14.3.2003
Где: Щёлково Моск.обл.

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



А память выделить забыл?
И ещё: метод называется GetCurrentFont(). И вызывается он так: GetCurrentFont(lpFont); lpFont - структура типа LOGFONT. Чтоб получить CFont надо вызвать CreateFontIndirect(lpFont);

PM MAIL ICQ   Вверх
Baa
Дата 11.9.2003, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



RAN, к тому, что ты сказал, могу добавить, что еще окно стоит перерисовать wink.gif ну, вобщем, как в моем коде выше smile.gif


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
mr.DUDA
Дата 11.9.2003, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


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

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



Код
LOGFONT lf;
CFont font;     <------------ переменная-то локальная !!!
f_dlg.GetCurrentFont(&lf);
font.CreateFontIndirect(&lf);
m_Edit.SetFont(&font);
m_Edit.RedrawWindow();
}


...и m_Edit загнётся при следующей же перерисовке, из-за того что назначенный ему HFONT уже почищен деструктором CFont переменной font.


--------------------
user posted image
PM MAIL WWW   Вверх
Baa
Дата 11.9.2003, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



mr.DUDA, это естественно smile.gif можно объявить её как static, тогда она останется жить, или вынести её в определение класса, что было бы грамотнее.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
NULL
Дата 11.9.2003, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасиба работает....

тока цвет он менять не хочет... пишет !не доп. операция! и закрывается
=((((((((((((
Bi u - тоже не хочет.
Если вручную поставить lf.lfItalic = true; работает.
=(((((((((((((((



PM MAIL ICQ   Вверх
Baa
Дата 11.9.2003, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



У меня работает все, кроме цвета, оно и понятно smile.gif
LOGFONT нет в нем информации о цвете wink.gif
А глюк у тебя скорее всего из-за того, что ты повторно вызываешь CreateFontIndirect



--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
NULL
Дата 11.9.2003, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



точно....!!!! теперь работает =))))
так, а как же быть если усер выбирет цвет, прога ж выпадает....
PM MAIL ICQ   Вверх
NULL
Дата 11.9.2003, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ха.. фсе сделал фсе работает.... спасиба
PM MAIL ICQ   Вверх
Baa
Дата 11.9.2003, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



NULL, вот и молодец smile.gif


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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