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

 

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

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

Янг Майкл Дж. Visual С++ 6. Полное руководство: В 2 т.(том1) — Бином, 2006. — 569 c.
Скачать (прямая ссылка): vicualcc2006t1.djvu
Предыдущая << 1 .. 167 168 169 170 171 172 < 173 > 174 175 176 177 178 179 .. 204 >> Следующая

9. Используйте мастер ClassWizard, чтобы сгенерировать обработчик командного сообщения для команды Format, как в программе FontDemo (см. параграф "Добавление обработчика сообщения меню"). Добавьте следующие строки в функцию OnTextFormat в файле TabDemoDoc.cpp.
//////////////////////////////////////////////////////////////// // Другие функции класса CTabDemoDoc
void CTabDemoDoc::OnTextFormat() {
// TODO: Здесь добавьте собственный код обработчика
// создание объекта диалогового окна с вкладками: CPropertySheet PropertySheet ("Format");
// создание объекта для каждой страницы:
CStyle StylePage;
СJustify JuBtifyPage;
CPitch PitchPage;
// добавление страниц к объекту диалогового окна: PropertySheet.AddPage (fiStylePage); PropertySheet.AddPage (SJustifyPage); PropertySheet.AddPage (fiPitchPage);
// инициализация объектов страниц: StylePage.m_Bold = m_Bold; StylePage.m_Italic = m_Italic; StylePage.m_TJnderline = m_TJnderline; JustifyPage.m_Justify = m_Justify; PitchPage.m_Pitch = m_Pitch; PitchPage.m_Spacing = m_Spacing;
// отображение диалогового окна с вкладками: if (PropertySheet.DoModal () = IDOK) {
// сохранение значений элементов управления страниц:
m_Bold = StylePage.m_Bold;
m_Italic = StylePage.m_Italic;
m_Underline = StylePage,m_Underline;
m_Justify = JustifyPage.m_Justify;
ni_Pitch = PitchPage.m_Pitch;
m_Spacing = PitchPage.m_Spacing;
// перерисовка текста: UpdateAllViews (NULL); )
)
Добавленный код напоминает код отображения стандартного диалогового окна в программе FontDemo. Однако вместо создания экземпляра класса диалогового окна функция OnTextFormat создает экземпляр класса CPropertySheet. Этот объект управляет отображением диалогового окна с вкладками. Затем функция OnTextFormat создает экземпляры всех классов, порождаемых от класса CPropertyPage и сгенерированных мастером ClassWizard. Каждый из этих объектов связан с одним из разработанных шаблонов диалогового окна и управляет определенной страницей. Функция OnTextFormat вызывает функцию AddPage для объектов класса CPropertySheet, чтобы добавить в окно новую страницу, и функцию DoModal класса CPropertySheet для создания и отображения диалогового окна с вкладками, содержащего страницу для каждого добавленного объекта.
Как и класс CDialog, класс CPropertyPage создает обработчики для кнопок ОК и Cancel, а также проверяет и передает данные между элементами управления и функциями объектов-страниц. Чтобы сделать доступной кнопку Apply или добавить кнопку Help и обработчик для одной из этих кнопок, необходимо породить собственный класс от класса CPropertyPage. (В программе TabDemo кнопка Apply заблокированна. В документации фирмы Microsoft утверждается, что лучше оставить эту кнопку заблокированной, а не пытаться ее удалить, так как это — стандартное средство интерфейса диалоговых окон с вкладками.) Аналогичное действие необходимо выполнить, если вы хотите увеличить размер диалогового окна с вкладками и добавить дополнительные элементы управления в само диалоговое окно (а не в одну из вкладок). Например, можно включить рамку для отображения образца, показывающего результаты применения параметров диалогового окна (подобно рамке Sample диалогового окна Format программы FontDemo). Дополнительная информация содержится в разделах справочной системы по классам CPropertySheet и CPropertyPage, а также в разделах: Visual С++ Documentation, Using Visual С++, Visual С++ Programmera Guide, Adding User Interface Features, Overviews, Property Sheets: Overview.
10. Включите в файл TabDemoDoc.cpp файлы заголовков для каждого из классов страниц.
// TabDemoDoc.срр : реализация класса CTabDemoDoc //
#include "stdafx.h" #include "TabDemo.h"
# include "TabDemoDoc.h"
¦include "style.h"
¦include "justify.h"
¦include "pitch.h"
Добавьте код инициализации переменных, хранящих параметры форматирования.
//////////////////////////////////////////////////////////////// // Конструктор/деструктор класса CTabDemoDoc
CTabDemoDoc::CTabDemoDoc()
{
// TODO: Здесь добавьте код конструктора.
m_Bold = FALSE;
m_Italic = FALSE;
m_Underline = FALSE;
m_Justify = JUSTIFY_LEFT;
m_Pitch = PITCH_VARIABLE;
m_Spacing = 1;
}
11. В файле TabDemoDoc.h определите следующие перечисления и переменные.
enum {JUSTIFYJbEFT, JUSTIFY_CENTER, JUSTIFY_RIGHT}; enum {PITCH_VARIABLE, PITCH_FIXED);
class CTabDemoDoc : public CDocument {
public:
BOOL m_Bold; BOOL m_Italic; BOOL m_Underline; int m_Justify; int m_Pitch; int m_Spacing;
12. В файле TabDemoView.cpp добавьте в функцию OnDraw такой же код для отображения текста в окне, как добавленный в функцию OnDraw класса представления программы FontDemo (см. параграф " Изменение кода класса документа и представления ").
13. В файле TabDemo.cpp добавьте вызов функции SetWindowText в функцию Initlnstance.
// Единственное окно приложения // отображается и обновляется.
m_pMainWnd->ShowWindow(SW_SHOW) ; m_pMainWnd->UpdateWindow();
m_pMainWnd->SetWindowText ("Tabbed Dialog Box Demo");
return TRUE;
)
Теперь можете построить и запустить программу TabDemo. Совет
Предыдущая << 1 .. 167 168 169 170 171 172 < 173 > 174 175 176 177 178 179 .. 204 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100