Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Янг Майкл Дж. -> "Visual С++ 6. Полное руководство: В 2 т.(том1)" -> 163

Visual С++ 6. Полное руководство: В 2 т.(том1) - Янг Майкл Дж.

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 157 158 159 160 161 162 < 163 > 164 165 166 167 168 169 .. 204 >> Следующая

case JUSTIFY_LEFT:
dc.SetTextAlign (TA_LEFT);
X = m_RectSample.left + 5;
break; case JUSTIFY_CENTER:
dc.SetTextAlign (TA_CENTER);
X = (m_RectSample.left + m_RectSample.right) / 2; break; case JUSTIFY_RIGHT:
dc.SetTextAlign (TAJRIGHT); X = m_RectSample.right - 5; break;
}
// установка режима отображения фона: dc.SetBkMode (TRANSPARENT);
// вывод строк текста: LineHeight = LF.lfHeight * m_Spacing; Y = m_RectSample.top + 15; dc.TextOut (X, Y, "AaBbCdDdEeFf");
Y += LineHeight;
dc.TextOut (X, Y, "GhHhliJjKkLl");
Y += LineHeight;
dc.TextOut (X, Y, "MmNnOoPpQqRr");
// отмена выбора шрифта: dc.SelectObject (PtrOldFont);
Il Не вызывайте функцию CDialog::OnPaint() для сообщений, // связанных с перерисовкой
Функция OnPaint служит только для перерисовки трех строк образца текста в рамке Sample. Перерисовывать элементы управления не нужно — они перерисовывают себя сами. (Описание различных методов, используемых для вывода строк текста, приведено в гл. 18.) Функция OnPaint выполняет следующие действия.
• Определяет свойства шрифта System (системный шрифт System с постоянной или переменной шириной в зависимости от значения m_Pitch).
• Модифицирует свойства шрифта в соответствии со значениям переменных
m_Bold, m_Ita]ic, m_Underline и создает на его основе новый шрифт, используемый для вывода текста.
• Задает выравнивание текста согласно значению переменной mJustify.
• Вызывает функцию CDC: :TextOut для вывода текста (значение переменной ra_Spacing определяет расстояние между строками).
Примечание
Если класс окна порождается от класса cview, то последний предоставляет обработчик сообщения OnPaint, вызывающий функцию onDraw класса окна представления. Однако так как класс диалогового окна не порождается от класса cview, то перерисовку этого окна выполняет сама функция OnPaint. Обратите внимание: функция OnPaint должна создать объект контекста устройства, принадлежащий MFC-классу CPaintoc (а не классу cciientDC, используемому для создания объектов контекста устройства в других функциях) Мастер ClassWizard добавляет в функцию OnPaint код для создания объекта контекста устройства.
Закрытие диалогового окна
MFC-класс CDialog предоставляет стандартные обработчики сообщений, получающие управление при закрытии диалогового окна. После щелчка на кнопке ОК. управление получает функция CDialog: :ОпОК, которая вызывает функцию CWnd: :UpdateData, чтобы проверить и передать данные из элементов управления диалогового окна в связанные с ними переменные, а затем — функцию CDialog: :EndDialog для закрытия диалогового окна. Если нажать кнопку Cancel, то управление получит функция CDialog: :OnCancel, которая просто вызывает функцию CDialog: :EndDialog для закрытия диалогового окна.
Если перед закрытием диалогового окна необходимо выполнить дополнительные действия, то используйте мастер ClassWizard, чтобы определить собственные обработчики сообщений. Для определения собственной версии функции ОпОК выберите идентификатор объекта IDOK и сообщение BN_CLICKED. Чтобы
определить собственную версию функции OnCancel, выберите идентификатор объекта IDCANCEL И сообщение BN_CLICKED.
Ниже приведено определение функции Опок, генерируемое мастером ClassWizard для класса диалогового окна CFormat:
void CFormat::OnOK()
{
// TODO: Здесь добавьте собственный код проверки CDialog::ОпОК();
}
Мастер ClassWizard вызывает одноименную функцию класса CDialog, выполняющую требуемую стандартную обработку. В функциях ОпОК и OnCancel, сгенерированных мастером ClassWizard, перед обращением к функции базового класса (CDialog: : ОпОК или CDialog:: OnCancel) необходимо добавить собственные операторы.
Отображение диалогового окна
Мы написали код, управляющий диалоговым окном Format при его отображении. Теперь добавим операторы, которые создают объект класса диалогового окна и отображают его.
Изменение меню программы
Первое действие — добавление команды меню, открывающей диалоговое окно Format. Для этого откройте вкладку ResourceView в окне Project Workspace для проекта FontDemo и выполните двойной щелчок на идентификаторе I DR_MA IN FRAME в разделе Menu графа. В редакторе меню выполните следующее.
1. Удалите меню File.
2. Удалите меню Edit.
3. Добавьте меню Text слева от меню Help. Свойства этого меню приведены в табл. 15.6.
4. Добавьте к новому меню Text команду Format, разделитель и команду Exit (рис. 15.13). Свойства этих команд перечислены в табл. 15.6.
Таблица 15.6. Свойства меню Text
Идентификатор Надпись Другие свойства
Отсутствует &Text Ниспадающее меню
ID TEXT FORMAT &Format...\tCtrl+F Отсутствуют
Отсутствует Отсутствует Разделитель
ID_APP_EXIT E&xit Отсутствуют
S FontDemo.ic IDR_ .MAINFRAME (Menu) HSBj
lext tjeip; j |ormat... Ctrl+F Ы

Рис. 15.13. Окончательный вид меню Text для программы FontDemo
Затем в таблицу горячих клавиш i dr_mainframe добавьте комбинацию клавиш для команды Format. Используйте метод, описанный в предыдущих главах, определяя одинаковый идентификатор id_text_format и для команды Format, и для комбинации клавиш Ctrl+F. Когда ресурсы программы будут определены, сохраните результаты работы, выбрав команду Save All в меню File или щелкнув на кнопке Save АН в стандартной панели инструментов.
Предыдущая << 1 .. 157 158 159 160 161 162 < 163 > 164 165 166 167 168 169 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100