Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки по Visual C++ (MFC, платформа .NET)


Информационный Канал Subscribe.Ru

Visual C++. MFC. Уроки по программированию с сайта http://progs.biz

Рассылка №45

Visual C++. MFC. Урок 39. Стандартный диалог для выбора шрифта.

Полные версии уроков (с картинками) можно найти по адресам
Урок 39. Стандартный диалог для выбора шрифта.

Visual C++. MFC. Урок 39. Стандартный диалог для выбора шрифта

Продолжаем изучение стандартных диалоговых окон. На этом занятии мы с вами посмотрим, как работать со стандартным диалогом для выбора шрифта. Создайте новый пустой проект типа SDI (для сего выберите MFC AppWizard (EXE) в качества типа проекта и далее Single Document на первом шаге мастера, после чего просто нажмите на Finish). Добавьте пункт меню Options и в нем подпункт Font. В нашей программе по щелчку по этому пункту меню будет появляться стандартное диалоговое окно для выбора шрифта. После выбора пользователем шрифта в основном окне нашей программы будет появляться написанная этим шрифтом надпись "Test".

В обработчик для добавленного меню в классе вида напишите следующие строки:

void CFontdlgView::OnOptionsFont()
{
    // TODO: Add your command handler code here
    CFontDialog dlg; //Заводим переменную для диалогового окна
    if(dlg.DoModal()==IDOK){
        memcpy(&m_lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));
        m_Font.CreateFontIndirect(&m_lf); //Создаем шрифт
    }
    //Перерисовываем окно
    Invalidate();
}

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

        ...
        memcpy(&m_lf, dlg.m_cf.lpLogFont, sizeof(LOGFONT));
        ...

мы заполняем структуру m_lf типа LOGFONT. При заполнении мы используем поле m_cf из класса CFontDialog. Затем мы создаем на основе этой структуры шрифт с помощью метода CreateFontIndirect класса CFont.

Разумеется, переменные m_lf типа LOGFONT и m_Font типа CFont ; должны быть где-то определены. Например, их можно завести в классе вида:

class CFontdlgView : public CView
{
    ...
public:
    LOGFONT m_lf;
    CFont m_Font;
    ...

Если вам надо, чтобы выбранный пользователем шрифт сохранялся в файле, то эти переменные надо объявить в классе документа и получеть к ним доступ через метод GetDocument() класса Вида. Впрочем, это замечание не относится к теме этого урока.

Теперь код для перерисовки (т. е. для вывода надписи "Test" выбранным шрифтом). Его мы пишем в заготовке метода OnDraw класса Вида:

void CFontdlgView::OnDraw(CDC* pDC)
{
    CFontdlgDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    //Приписываем заданный пользователем шрифт к контексту устройства
    pDC->SelectObject(&m_Font);
    //Выводим надпись выбранным шрифтом
    pDC->TextOut(10, 10, "Test");
}

Выбранный пользователем шрифт сохранился в переменной m_Font типа CFont. Эта переменная из класса документа. Выбранный шрифт надо приписать к контексту устройства, после этого весь вывод на форму будет осуществляться новым шрифтом.

Наверх
Рассылки Subscribe.Ru
Delphi. Уроки
Delphi. Уроки. Уровень - от начинающего до профи. Каждый урок рассчитан на 15 - 20 минут. Темы - библиотека VCL, создание компонентов, создание ActiveX, COM, COM+, DCOM, FAQ, работа с базами данных (InterBase и др).

Copyright Алексеев Игорь, 2002

Copyright cайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное