Разделяне на прозорец

5 отговора 192 прегледа
#1

Разделяне на прозорец

Необходима ми е Win функция която да раздели даден прозорец на четири равни части а когато стрелката се позиционира в средата на разделения прозорец/общата точка на четирите мални/ да има възможност за променяне на размерите на малките прозорци.

Отговор
в отговор на Alex #2

Re: Разделяне на прозорец

[Ако не е за MFC изобщо не чети по-долу]

При VC++ & MFC това става със CSplitterWnd. Просто трябва да създадеш сплитера с 2 колони и два реда. Тези сплитери са два вида - динамични (които показват различни скролнати части от едно и също View) или статични (при които във всяка отделна част на сплитера има отделно View).

Понеже не ме мързи ще ти кажа моя опит тъй като доста се мъчих първия път.

В MSDN пише как става, но ако си със VC++6.0 знай че Wizard-а ще ти го направи много лесно.
Някъде по табовете му трябва да "Advanced" от където в таба "Window Styles"сетваш опцията "Use split window". По-нататък, като натиснеш NEXT и ако избереш "MFC Standard" стил ще получиш 2x2 динамичен сплитер, а ако избереш стил "Windows Explorer" ще полечиш 1x2 статичен сплитер.
Значи след като направиш проекта с Wizard-а много лесно ще си го донастроиш.

До тук е лесно ако ти трябва динамичен сплитер. Wizarda дава всичко.
В случая за Static e малко по-трудно защото Wizard-a ти дава само 1x2 а не 2x2. Лесно ще го оправиш, като погледнеш мембъра CMainFrame->OnCreateClient.

И понеже сигурно ще криеитваш още View-та (сигурно те трябват ти 4 различни) за да ги слагагаш в сплитера, правиш си ги наследник на каквото искаш - CListView, CFormView, ... и ги пъхаш по местата им чрез m_wndSplitter->CreateView(row, col, RUNTIME_CLASS(CMyView), ...). Тук за да работи макроса RUNTIME_CLASS твоя клас CMyView трябвя да е обявен по-слециално: в декларацията на класа (*.h) пишеш DECLARE_DYNCREATE(CMyView), а пък в имплементацията (*.cpp) слагаш IMPLEMENT_DYNCREATE(CMyView, CView); разбира се, ако извличаш от друг клас, например CFormView, втория аргумент CView на предишния макрос трябва да замениш с CFormView.

... почни по този начин чрез експерименти с Wizard-а като разбереш каква е далаверата, ще се научиш да го правиш и без него ... в MSDN си го пише - гледай CSplitterWnd

Отговор
в отговор на Alex #3

Re: Разделяне на прозорец

На мен пък ми е необходима "Win функция", която да ме направи милионер. Е не става. Малко труд трябва.



Si Vis Pacem, Para Bellum
Отговор
в отговор на sffsd #4

Браво бе

В 3:12 през ноща едновременно постване :)



Si Vis Pacem, Para Bellum
Отговор
в отговор на MиГ #5

Re: Браво бе

а ако намериш онази функция кажи и на мене :)

Отговор
в отговор на Alex #6

Re: Разделяне на прозорец

Ako stava vapros za MFC-> CSplitterWnd

Tuk ima i tutorial po vaprosa:
[линк]

Отговор