MDI - Problem
-
wieso ist dein mainwnd ein dialog? vermutlich ist das das problem.
wieso nicht einfach
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/multipledocumentinterface/multipledocumentinterfacereference/multipledocumentinterfacefunctions/createmdiwindow.asp
allgemeines
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Windowing/MultipleDocumentInterface.asp
beispiel
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/multipledocumentinterface/usingthemultipledocumentinterface.asp
-
thx erstmal.
hab die msdn auch schon durchwühlt.
CreateMDIWindow macht keinen unterschied zu WM_MDICREATE.mit dem dialog: naja wär halt für mich praktischer zu designen...ich werds mal mit nem normalen window probieren. wär echt schade wenns am dialog liegen würde.
-
öhm, normal nimmt man für nen normalen dialog in so nem fall nen formview, alledings weiß ich net, ob die nur bei mfc existiert..
-
@(D)Evil
es geht auch mit der winapi, du musst nur den dialog als child vom fenster machen.
-
ok es geht jetzt einigermaßen gut wenn ich mein hauptfenster mit CreateWindow() erstelle.
beim hauptfenster ist das auch kein problem, da sind nur ein paar buttons und das client-fenster drauf.
allerdings würde ich gerne für die mdi-childs dialoge verwenden.ist das irgendwie möglich?
ty
-
keine möglichkeit?
es ist doch sehr umständlich jedes eingabefeld/label usw mit createwindow zu erstellen...es muss doch eine komfortablere lösung geben ?!?
außerdem muss man alle styles manuell setzen, schriftart usw...pls help!
-
miller_m schrieb:
@(D)Evil
es geht auch mit der winapi, du musst nur den dialog als child vom fenster machen.so geht es. afaik findest du in den msdn samples etwas darüber.
-
aha...also sollte das mdi-child WS_OVERLAPPEDWINDOW sein, der dialog ein fenster komplett ohne rahmen, den ich dann ins mdi-child als child-window einbinde?
und in der callback des mdi-childs sollte es in etwa so aussehen(?):
LRESULT CALLBACK MdiChildCallback(HWND window, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: { CreateDialog(...); } break; } return DefMDIChildProc(window, message, wParam, lParam); }und dann bräuchte ich noch eine zusätzliche callback funktion für den dialog?
danke, mdi
-
so in etwa, hab es schon lange nicht mehr gemacht, aber es hört sich vernünftig an. du könntest ja in der dlgcallback einfach die msg weiterleiten ala
SendMessage(GetParent(hwnd), msg, wParam, lParam);
-
ok vielen dank es funktioniert jetzt soweit!
zwar etwas umständlich wegen der 2ten callback, aber immer noch besser als alles manuell zu erstellen!und die einzige nachricht, die ich weiterleite, ist WM_SIZE, den rest brauche ich gar nicht.
10x, mdi