Закладки и их свойства. Функции класса CTabCtrl. Тестирование обработчика изменения активного корешка

Страницы работы

10 страниц (Word-файл)

Фрагмент текста работы

остается только разместить на шаблонах блоков диалога необходимые элементы управления.

Для добавления элемента PropertySheet из галереи компонентов  выберите пункт меню ProjectAdd To ProjectComponents and Controls...

  в диалоговом окне Components and Controls Gallery Откройте папку Visual C++ Components,  выберите в ней элемент PropertySheet и нажмите кнопку Insert ;  укажите тип будущего листа свойств;

 

укажите модальный диалог или немодальный;

  выберите класс, который будет иметь доступ к листу свойств (как правило, это класс диалогового окна из которого осуществляется вызов листа свойств);

 

укажите количество страниц в листе свойств;

  укажите имена класса страницы свойств и имена классов страниц;

 

Мастер добавляет подключение заголовочного файла в классе, который использует класс страницы свойств:

// TabulDlg.cpp : implementation file

•  • •

#include "MyPropertySheet.h"

Мастер добавляет подключение заголовочных файлов страниц к классу страницы свойств:

// MyPropertySheet.h : header file

•  • •

#include "MyPropertyPage1.h"

Мастер создаёт объекты страниц как члены класса СMyPropertySheet:

class CMyPropertySheet : public CPropertySheet

{

•  • • public:

     CMyPropertyPage1 m_Page1 ;

     CMyPropertyPage2 m_Page2 ;

•  • •

};

В конструкторе класса окна свойств мастер вызывает функции AddPage ( ) для добавления вкладок в окно свойств:

CMyPropertySheet :: CMyPropertySheet ( CWnd* pWndParent )

                                   : CPropertySheet ( IDS_PROPSHT_CAPTION , pWndParent )

{

     AddPage ( &m_Page1 ) ;

     AddPage ( &m_Page2 ) ;

}

Обмен данными с листами свойств

Для открытия окна с листами свойств мастер добавляет в класс диалогового окна CTabulDlg функцию-член класса OnProperties ( ), реализация которой имеет следующий вид:

void CTabulDlg :: OnProperties ( )

{

     CMyPropertySheet propSheet ;       // создаёт объект листов свойств

     propSheet.DoModal ( ) ;                  // открывает диалоговое окно с листами свойств

}

Для того чтобы вызвать эту функцию нам нужно подключить её к какому-либо элементу управления, например к кнопке. Добавляем кнопку IDC_PROP в главное диалоговое окно. Выполняем обработку щелчка на кнопке IDC_PROP – добавляем или редактируем команду вызова функции OnProperties ( ) при щелчке на кнопке IDC_PROP в карте сообщений: BEGIN_MESSAGE_MAP ( CTabulDlg , CDialog )  • • •

     ON_BN_CLICKED ( IDC_PROP , OnProperties )

END_MESSAGE_MAP()

Теперь решим следующую задачу: главное диалоговое окно содержит текстовое поле и флажок:

 

При нажатии кнопки Properties открывается диалоговое окно со страницами свойств, которые также содержат текстовое поле и флажок:

           

Если пользователь закрыл окно свойств с помощью кнопки OK, то введённые данные передаются в главное диалоговое окно.

Для решения этой задачи нужно добавить в главное диалоговое окно элементы управления и с помощью ClassWizard создать ассоциированные переменные категории Value.

// TabulDlg.h : header file

class CTabulDlg : public CDialog

{

•  • • public:

            BOOL             m_flag ;                                                                                     // объявляет переменную член-класса          CString           m_text ;                                                                                      // объявляет переменную член-класса

} ;

// TabulDlg.cpp : implementation file

CTabulDlg :: CTabulDlg ( CWnd* pParent /*=NULL*/) : CDialog ( CTabulDlg :: IDD , pParent )

{

•  • •

            m_flag = FALSE ;                                                                                             // инициализирует переменную член-класса             m_text = _T ("") ;                                                                                             // инициализирует переменную член-класса

}

void CTabulDlg :: DoDataExchange ( CDataExchange* pDX )

{

•  • •

  DDX_Check ( pDX , IDC_FLAG , m_flag ) ; // обмен данными между переменной m_flag

// и элементом управления IDC_TEXT

     DDX_Text ( pDX , IDC_TEXT , m_text ) ; // обмен данными между переменной m_text

// и элементом управления IDC_TEXT

}

Добавляем на страницы свойств аналогичные элементы управления. К сожалению, мастеру ClassWizard классы страниц свойств недоступны. Поэтому необходимые строки можно создать путём копирования и небольшого редактирования.

Добавляем в класс CMyPropertyPage1 переменную член-класса m_text:

// MyPropertyPage1.h : header file class CMyPropertyPage1 : public CPropertyPage

{

•  • • public:

     CString       m_text ;                                         // объявляет переменную член-класса

};

Добавляем в класс CMyPropertyPage2 переменную член-класса m_flag:

// MyPropertyPage1.h : header file class CMyPropertyPage2 : public CPropertyPage

{

•  • • public:

     BOOL         m_flag ;                                         // объявляет переменную член-класса

} ;

Инициализируем переменную-член класса m_text в конструкторе класса

Похожие материалы

Информация о работе