C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Автоматическая разбивка для элементов управления / Элементы управления. Разное / Элементы управления

Автоматическая разбивка для элементов управления

Автор: Mike Melnikov

Описание

Здесь представлены два класса ZSplitterDlg и ZSplitter , которые помогут Вам добавить разделители в диалоговое окно. Так же разделители сделают возможным перемещение и изменение размеров Ваших элементов управления.

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

void addControls(int count, bool connectVertical, ...);
void addControl(int id);

Демонстрационный проект показывает автоматиеское добавление элементов управления в классы CDialog, CPropertyPage, CView и CFormView.

Sample Image

Использование класса

Самый простой способ - это использовать шаблон ZSplitterDlgImpl. Вам необходимо изменить:

  • Родительский класс Вашего диалога на view класс,
  • конструктор,
  • второй параметр в макросе BEGIN_MESSAGE_MAP , и
  • функцию "on init" Вашего окна.
// в заголовке
class CTestDlg1 : public ZSplitterDlgImpl<CPropertyPage>

// в исходнике
CTestDlg1::CTestDlg1() : /*...*/ ZSplitterDlgImpl<CPropertyPage>(CTestDlg1::IDD) {}

BEGIN_MESSAGE_MAP(CTestDlg1, ZSplitterDlgImpl<CPropertyPage>)
	//	...
END_MESSAGE_MAP()

BOOL CTestDlg1::OnInitDialog() 
{
	// ... здесь используем функцию addControl(s)
	init();
	// ...
}

Шаблон ZSplitterDlgImpl имеет второй параметр (ZSplitter2 по умолчанию). ZSplitter2 содержит в себе сам сплиттер. Он имеет виртуальную функцию OnPaint() - и Вы можете изменять её реализацию для получения различных видов Вашего элемента управления (см. класс CMyView1 в демонстрашке).

Шаблон ZSplitterDlgImpl поможет Вам использовать сплиттер, но тогда Вы не сможете использовать его базовый класс ZSplitterDlg (см. класс CTestDlg2) в демонстрационном пректе.

Это пример Вашего диалога в редакторе ресурсов:

in vc++ editor

И пользователь может изменять его во время выполнения приложения.

after user manipulations

Для добавления контрола в "раскладку сплиттера" используйте функции addControls или addControl либо группу контролов: они будут перемещаться совместно. Например

  addControls(2,false,IDC_LIST6,IDC_LIST7);
  addControls(2,true,IDC_LIST1,IDC_LIST8);
  addControl(IDC_LIST9);
  addControl(IDC_LIST2);
  addControl(IDC_LIST3);
  addControl(IDC_LIST4);
  addControl(IDC_LIST5);

Кроме того Вы можете вручную добавлять класс ZSPLITTER класс () на страницу. Посмотрите, как это выглядит на рисунке, а так же в классе CTestDlg3 демонстрационного проекта.

before moving after moving