Разцепени изображения-динамични и статични
| Информационни технологии | 2009-12-04 | 103 сваляния |
38.Разцепени изображения-динамични и статични.Пример.
Ето връзката между елементите на split изображението:
Split линията може да бъде хоризонтална или вертикална.В SDI това е еднствения начин да имаме повече от едно изображение. В SDI прозореца със сплитерите е дъщерен на MainFrame,а в на MDI Childframe.
Има два вида сплитери: динамични и статични.
Динамичните сплитери дават възможност в един прозорез да се наблюдават различни части на обекта. Създават се и се унищожават динамично.Ако разделим хоризонтално, по вертикала ще имаме различни Scrollbars, ако разделяме по вертикала ще имаме 2 различни хоризонтални.Всички панели по подразбиране се базират на едно изображение, но не е невъзможно са де променят.Това става като един сплитер има метод, чрез който всеки оплитер е елемент на различно View.Този метод е на CsplitterView.
Статичните сплитери- в тях панелите се указват преди създаване на приложение и тогава се създават,т.е. броя панели се запазва.Всеки панел се базира на отделно указано изображение(няма подразбиране).
Създаване на приложение поддържащо динамични сплитери:
1. деклариране на нова пром. към CChildFrame ( или CMainFrame):
// Implementation
private:
CSplitterWnd m_wndSplitter;
2. предефиниране на виртуалната OnCreateClient() на рамката :
BOOL CChildFrame:: OnCreateClient( LPCREATESTRUCT lpcs, CCreateContext* pContext)
{ CSize size (10, 10);


Return m_wndSplitter.Create ( this, 2,1, size, pContext); }









р
одителя на прозореца със сплитери прозореца рамка
м
аксималния брой панели на които може да се раздели
м
аксималната ширина и височина при които панелите се създават
с
тандартна структура, едно от полетата й е име на класа на изгледа, използван за панелите.
3. CSplitView::OnDraw()
Възможно е да се създадът динамични сплитери в статични.
създаване на прил., поддържащо статично split изображение:
-
в класа на прозореца рамка (CMainFrame или CChildFrame): CSplitterWnd m_wndSplitter;
-
предефиниране :
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpc, CreateContext* pContext)
{
if (m_wndSplitter.CreateStatic(this, 2, 1) == FALSE)
// код при неуспех
// следва създаване на изглед за всеки статичен панел от прозореца:
BOOL bCreated = m_wndSplitter.CreateView( 0,0,);
bCreated = m_wndsplitter.CreateView( 1, 0, RUNTIME_CLASS(CsplitView),
// коорд. (долу ляво) и изглед за втория split view
);
SetActiveView((CView*) m_wndsplitter.GetPanel(0,0); //активен панел
Return TRUE;
}
37 Различни типове документи в едно MDI приложение.
Съвсем спокойно документите могат да са от различни типове. Обикновено този процес се стартира от File/New от менюто.Първо трябва да имаме отделен документен шаблон за всеки тип документ.
-
създаваме подклас за документ и подклас за изглед-например CPiramDoc и CpiramView.Класовете са динамично създаваеми.
-
за новия тип са нужни 4 нови ресурса-икона, меню, таблица и акселератори и документен низ.Всички те имат общ ID например IDR_PIRAMTYPE.
-
ако е нужно се създава и собствена дъщерна рамка за новия тип документ.
-
модифицира InitInstance() за новия документен шаблон.
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate( описаните по-долу 4 параметъра);
-
ресурсен ID.
-
Указател към CRuntimebg-BG">за документа.
-
Указател към CRuntimebg-BG">рамката.
-
Указател към CRuntimebg-BG">за изгледа ( CPiramView).
регистрирате новия шаблон :
AddDocTemplate( pDocTemplate);
Тагове от реферата: split, епени, емент, ДИНАМИЧНИ, пример, между











