Рассмотрим работу с CPS и CPP
Вначале необходимо создать соответствующие ресурсы диалоговых окон, по возможности для вкладок единичного размера и шаблон для основного окна оставив место для размещения вкладок, но программа потом сделает это автоматически. Окно может быть визард-подобным (в зависимости от используемых методов создания окна). Можно заблокировать отображение кнопок Apply и Finish, если надо, чтобы окно с вкладками не было визардоподобным.
Для основного окна необходимо создать класс, выводимый из CPS, а для вкладок классы, выводимые из CPP. Для этого использовать ClassWizard, чтобы организовать обмен и добавить ещё свои переменные для интерфейса.
Когда создаются шаблоны, то не забыть установить флажок Visible в свойствах. Для вкладок обязательно установить флажок TitleBar на вкладке Styles и сбросить флажок Disabled на вкладке More Styles.
Важно:
- модальное окно создаётся с помощью DoModal(), немодальное - Create() к объекту CPS.
- для создания Визард-подобного диалогового окна (с вкладками) необходимо непосредственно перед вызовом DoModal() выполнить метод SetWizardMode(). Для активизации кнопок Визарда надо вызывать метод SetWizardButtons(). Для активизации кнопки Finish после появления последней вкладки визарда надо вызвать метод SetFinishText().
- для любой вкладки надо выполнить метод CPropertySheet::AddPage() указав в качестве аргумента ссылку на объект вкладки и тогда она появится в окне диалога.
- кнопку Apply можно заблокировать например так:
void CConectDlg::Init()
{ m _psh.dwFlags |= PSH_NOAPPLYNOW;}
Здесь CConectDlg подкласс класса CPS, m_psh переменная объекта класса CPS структурного типа, dwFlags – поле этой структурной переменной задающей режим управления.
- обычно, если кнопка APPLY отображается, то она неактивна, активизируется методом SetModified(TRUE) и деактивизируется SetModified(FALSE).
Пример.
Строится окно для соединения с серверами. Класс CConnectDlg является подклассом CPS.
Вкладки:
При выборе из меню в Connection в главном окне приложения вызывается обработчик:
void CMainWnd::OnConnection()
{
CConnectDlg propsheet(“Connection”);
CFirstConnection pageFirst;
CSecondConnection pageSecond;
propsheet.Init();//установка управления в окне диалога в частности отказ от Apply кнопки
pageFirst.m_strServer = m_strFstServer;
pageFirst.m_nChennel = m_nFstChannel;
//продолжение нобходимых установок соответственных объектов pageFirst, pageSecond
propsheet.AddPage(&pageFirst);
propsheet.AddPage(&pageSecond);
while (true)
{
if (IDOK != propsheet.DoModal())
{…} else {…}
}
}
Дата добавления: 2016-05-26; просмотров: 1566;