Разделяне на прозорец
5 отговора
192 прегледа
Разделяне на прозорец
Необходима ми е Win функция която да раздели даден прозорец на четири равни части а когато стрелката се позиционира в средата на разделения прозорец/общата точка на четирите мални/ да има възможност за променяне на размерите на малките прозорци.
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
При 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
Re: Разделяне на прозорец
На мен пък ми е необходима "Win функция", която да ме направи милионер. Е не става. Малко труд трябва.
Si Vis Pacem, Para Bellum
Si Vis Pacem, Para Bellum
Re: Разделяне на прозорец
Ako stava vapros za MFC-> CSplitterWnd
Tuk ima i tutorial po vaprosa:
[линк]
Tuk ima i tutorial po vaprosa:
[линк]