Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

Глава 17. Диалоговая панель управления

Если в панели управления приложения необходимо разместить много разнообразных элементов управления, то значительно удобнее создать эту панель на основе другого класса - класса CDialogBar. Этот класс, так же как и класс CToolBar, наследован от базового класса CControlBar.

Класс CDialogBar позволяет создать диалоговую панель управления на основе шаблона диалоговой панели. В отличие от обычной диалоговой панели диалоговая панель управления, созданная на основе класса CDialogBar, имеет все свойства панели управления. Она может быть присоединена к одной из границ окна или может отображаться в отдельном мини-окне.

Приложение может иметь несколько панелей управления, созданных на основе классов CToolBar и CDialogBar.

Методы класса диалоговой панели управления

Непосредственно в состав класса CDialogBar входят всего два метода - конструктор класса и метод Create.

Конструктор класса только создает соответствующий объект, но не саму панель управления. Чтобы создать панель управления, следует вызвать метод Create и указать ему шаблон диалоговой панели, используемый для создания диалоговой панели.

Метод Create имеет два различных формата:

BOOL Create( CWnd* pParentWnd, LPCTSTR lpszTemplateName, UINT nStyle, UINT nID ); BOOL Create( CWnd* pParentWnd, UINT nIDTemplate, UINT nStyle, UINT nID );

Первый параметр задает окно, для которого создается диалоговая панель управления. Обычно в качестве такого окна выступает главное окно приложения.

Второй параметр указывает шаблон панели управления. В зависимости от того, как ресурс панели определен в ресурсах приложения, указывается либо идентификатор, либо имя ресурса.

Третий параметр определяет начальное положение панели управления в окне приложения. Можно использовать следующие флаги: CBRS_TOP, CBRS_BOTTOM, CBRS_LEFT, CBRS_RIGHT.

Последний параметр определяет идентификатор диалоговой панели управления.

Создание диалоговой панели управления

Как и в случае разработки диалоговых панелей, сначала следует подготовить шаблон диалоговой панели, которая будет использоваться как основа панели управления. В шаблоне диалоговой панели следует установить только один стиль WS_CHILD - диалоговая панель будет выступать в качестве дочернего окна и не должна иметь ни заголовка, ни рамки. Готовый шаблон следует сохранить в файле ресурсов, например, с идентификатором ресурса IDD_DIALOGBAR.

В состав класса окна, в котором будет отображаться диалоговая панель управления, надо включить элемент данных класса CDialogBar. Этот элемент будет представлять диалоговую панель управления. Например:

class CMainFrame : public CMDIFrameWnd { protected: CDialogBar m_wndDlgBar; // диалоговая панель управления // другие описания класса ....... };

Затем необходимо переопределить метод OnCreate класса окна и добавить в него вызов метода Create класса CDialogBar для объекта, представляющего диалоговую панель управления.

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

Обычно создание диалоговой панели управления и разрешение ее перемещения производят при обработке сообщения WM_CREATE для главного окна приложения, например:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { // вызов метода базового класса для корректного создания окна if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // разрешить присоединение панелей ко всем сторонам окна EnableDocking(CBRS_ALIGN_ANY); // создание диалоговой панели управления if(!m_wndDlgBar.Create(this,IDD_DIALOGBAR, CBRS_BOTTOM,IDD_DIALOGBAR)) return -1; // установить характеристики диалоговой панели управления m_wndDlgBar.SetBarStyle(m_wndDlgBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); // разрешить присоединить панель к любой строке родительского окна m_wndDlgBar.EnableDocking(CBRS_ALIGN_ANY); // присоединить диалоговую панель управления к родительскому окну DockControlBar(&m_wndDlgBar); // создание панели управления (процесс создания рассматривался выше) ЏЏЏ // создание панели состояния (процесс создания рассматривается ниже) ЏЏЏ return 0; }

Элементы управления диалоговой панели передают сообщения непосредственно своему родительскому окну. Поэтому следует добавить в таблицу класса окна соответствующие макрокоманды для получения сообщений и включить в класс окна методы для обработки этих сообщений.

Если диалоговая панель управления достаточно сложна и имеет много органов управления, то можно создать для нее отдельный класс на основе базового класса CDialogBar (однако это способ не очень часто используется). Этот класс следует дополнить методами, обрабатывающими сообщения от элементов управления. Таким образом можно разгрузить таблицу сообщений главного окна приложения.


[ Назад | Оглавление | Далее ]









helloworld.ru © 2001-2021
Все права защищены