Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Слушай, дружище, зачем так мучиться с этим языком С++, ты ведь не Билл Гейтс. Возьми тот же Python и программируй, он кроссплатформенный, под Windows тоже работает. Я сам давно заметил: то что на Си пишешь в страницу кода, на питоне решается в одну-две строки. При том, питон намного проще, я его сам недавно изучил по видеокурсу вот этому. Кстати, автор отлично там объясняет. Буквально день-два и уже будешь писать на нём, чего не скажешь про сложный С++.

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

Автор: 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




<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS