Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Csplitterwnd / Cmainframe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.07.2003, 23:44 Uhr
bIOHAZARd



Hi,

ich versuche gerade eine (MDI-) Anwendung zu schreiben die ähnlich wie bei Visual C++ 6/7 direkt im MainFrame einen Splitter hat. Links möchte ich mit einer CFormView eine Tool Palette darstellen, und rechts halt die ChildFrames.

Wenn ich versuche einen Splitter innerhalb des ChildFrames zu erstellen ist dies kein Problem, die Ansicht wird gesplittet, aber die gleiche Vorgehensweise übertragen auf CMainFrame führt zu einer Assertion in der winmdi.cpp Zeile 508 was mir aber nicht so direkt weiterhilft :\

Weiß jemand wie mans richtig macht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.07.2003, 11:21 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
VC++ ist meiner Meinung nach keine MDI, sondern eine SDI. Dies kannst du mit folgendem Source erreichen: www.datamekanix.com
Wenn du z.B. den Arbeitsbereich gleich wie in Vc++ machen willst, erzeugst du eine Instanz und schreibst dann folgendes:

C++:
if (!m_wndInstantBar.Create(_T("Workbench"), this, 127)) {
    TRACE0("Failed to create instant bar\n");
    return -1;        // fail to create
}
m_wndInstantBar.SetSCBStyle(m_wndInstantBar.GetSCBStyle() |
SCBS_SIZECHILD);
if (!m_wndIBTree.Create(WS_CHILD|WS_VISIBLE|
   TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
   CRect(0, 0, 0, 0), &m_wndInstantBar, 100)) {
  
  TRACE0("Failed to create instant bar child\n");
   return -1;        // fail to create
}
m_wndIBTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);



Den Hintergrund änderst du dann in PreCreateWindow Funktion deiner View Klasse:

C++:
if(!CView::PreCreateWindow(cs)) {
    return FALSE;
}

cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), ::CreateSolidBrush(RGB(128,128,128)), NULL);

if(cs.lpszClass != NULL) {
  return TRUE;
}
else {
  return FALSE;
}


mfg mike
--

Dieser Post wurde am 13.07.2003 um 11:24 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: