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

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

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

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

Для добавления элемента 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 в конструкторе класса

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

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