Größe eines angedockten CDialogBar ändern
-
Hallo zusammen.
In einem MDIFrame habe ich links ein CDialogBar angedockt eingefügt. Ich möchte es in der Größe (horiz.) veränderbar machen. Darum habe ich ihm einen WS_THICKFRAME verpasst. Fasse ich den DialogBar-Rahmen nun rechts an und ziehe ihn, scheint das MDIFrame nix davon mitzubekommen. Es bleibt einfach unverändert. Ziehe ich den Bar nach rechts, wird es vom Clientbereich des MDIFrame überlagert, ziehe ich ihn nach links, wird der nun frei werdende Bereich nicht neu gezeichnet.
Ändere ich danach die Größe des MainFrame, springt das DialogBar einfach wieder auf seine Anfangsgröße.Ich habe versucht, in der OnSize-Routine des DialogBar ein CalcFixedLayout(FALSE, TRUE) aufzurufen oder ein RecalcLayout() für das MainFrame, aber das hat alles keine Wirkung.
Was mache ich da falsch?
Hier der Code, wie der DialogBar angelegt wird:
// in der Klassendefinition für CMainFrame steht // CMyDlgBar m_wndMyDlgBar; // CMyDlgBar ist abgeleitet von CDialogBar // in der Body-Datei int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { : if (!m_wndMyDlgBar.Create(this, IDD_MYDLGBAR, CBRS_LEFT|CBRS_BORDER_3D|CBRS_BORDER_LEFT, IDD_MYDLGBAR)) { TRACE0("Failed to create MyDlgBar\n"); return -1; // fail to create } : }
Die Ressourcendefinition sieht so aus:
IDD_MYDLGBAR DIALOGEX 0, 0, 114, 377 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_THICKFRAME FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_DISABLEDRAGDROP | WS_BORDER | WS_TABSTOP,0,27,111,293,WS_EX_CLIENTEDGE PUSHBUTTON "Aktualisieren",IDC_READNEW,0,3,103,15 END
Weiß da jemand Rat?
Für Hilfe jeder Art bin ich schon im Voraus äußerst dankbar.Wes
-
Hm... das Ganze scheint ja nun wohl doch nicht so ganz ohne zu sein, wie einerseits die ausbleibenden Antworten zeigen und es in der MFC wohl einfach nicht vorgesehen ist, ein Resize auf eine DialogBar im Docking-Mode zu realisieren (echt ein böses Versäumnis, zumal ja im Studio selbst die Technik anscheinend verwendet wird). Hab bei meinen Recherchen jetzt einen Lösungsansatz gefunden.
Die Sache ist aber noch ein wenig fehlerbehaftet, da es ursprünglich für MFC-Version < 4.0 entwicklet wurde. Im Debug-Modus gibts noch reichlich Ausnahmen. Aber im Release-Mode funktionierts scheinbar trotzdem tadellos.