Neuer Applikationsrahmen
-
Das Problem ist, dass das MDI Interface eigentlich schon immer gemacht hat was es will. Alks es in Windows 3.1 rauskam hatte ich damit meine "helle Freude" und einen Bug nach dem anderen gefunden. Schnee von gestern, der bis in die Neuzeit reicht scheint es mir...
Ich benutze VA-X Ich gehe auf die Funktion und sage "Go". Da ich die MFC in den Source Dateien im VA-X angegeben habe findet er eigentlich immer die Implementierung.
-
Ja, also VA-X hatte ich auch mal in der Demo-Version hier, war schon ziemlich schön, vor allem dass es direkt aus dem Header die Definitionen für die Funktionen basteln kann usw.. Leider hatte ich in dieser Phase aber auch meine ersten IDE- und nicht nur Compiler-Crashes... Und für meine Verhältnisse kostet es natürlich auch eine Stange. Klar, wenn man als Unternehmer damit mehr Aufträge wegen gesparter Zeit umsetzen kann, ist es das natürlich wert
Aber ich darf feststellen: Ich bin heute recht schnell und ohne größere Probleme auf der anderen Seite angelangt, danke für Deine Hilfe!
-
Herrje, einige Stunden habe ich daran rumdebugged...
Wenn man an den Tab-Schließen-Buttons nach Programmerzeugung noch etwas dreht, scheint erst einmal alles gut zu funktionieren, bis man auf die Idee kommt, ein zweites Dokument aufzumachen und zu schließen, während das erste Dokument in einem Nicht-Schließen-Modus ist. Denn dann werden zwar noch Paint und Timer-Nachrichten zugestellt, aber für alles andere ist das ganze Programm dann nicht mehr erreichbar (Maus und Tastatur...). Als würde es abschmieren... Einmal Minimieren und Wiederherstellen reicht dann aus, um auch den Rest der Nachrichten wieder zu bearbeiten... Herrje... Ich lasse das glaube ich lieber.
-
Wo steht die Kiste demm, wnen Du den Debugger aktivierst.
Sicher in der normalen Mesage Loop?
Wer hat den Focus?
Was ist das aktive Fenster?
-
Hey!
Nun, der Messageloop wird weiterhin angefahren (ich hatte einfach mal auf Pause gedrückt und dort hing er dann wie nicht anders zu erwarten im GetMessage), aber da sind auch viele Timer bzw. APCs unterwegs und dann war ich zu müde da noch irgendwie einen passenden bedingten Breakpunkt bei AfxMessagePump anzubringen (irgendwie auf WM_LBUTTONDOWN oder so)... Das werde ich dann aber noch nachholen. Ein weiteres Problem ist auch, dass sobald der Debugger anspringt der Fokus wechselt und wenn ich die Anwendung dann weiterfahre ist das Problem dadurch schon behoben, das heißt ich muss wirklich genau durch den einen Debugger-Ansprung alles klarmachen... Und eigentlich hatte ich im CMFCTabCtrl-Code auch überhaupt nix "angestoßenes" gesehen (DestroyWindow, Repaint,...), wenn man die EnableMDITabGroups aufruft und da mal etwas mitdebugged.
Ich werde heute Abend nochmal schauen, im Moment bin ich erstmal riesig erschöpft.
-
Das wird heute nix mehr -.-
Fällt Dir eine einfachere Variante ein, als in thrdcore einen Breakpunkt für msg=WM_MBUTTONDOWN zu setzen, und dann per Code nach den fehlerverursachenden Zeilen eine solche Nachricht zu posten?
-
Remote Debugging ist bei so etwass ein Muss!
Das geht auch in einer virtuellen Maschine!
-
Oha, das ist eine Idee! Danke dafür, werde mich dann mit den Resultaten melden!
-
Ich kam immer noch nicht dazu, eine VM zu installieren, für das beschriebene Problem. Ich denke nun aber, dass es wesentlich simpler ist, als zunächst angenommen.
Nachdem mein View irgendwann einmal den Fokus verloren hat (zB. indem man auf einen Button in einer anderen Pane clickt, Menüs funktionieren weiterhin hervorragend), bekommt der View den Fokus nicht mehr, wenn man auf ihn draufclickt. Wenn man auf den Tab des MdiChildFrames clickt, bekommt der View den Fokus wieder und alles ist gut.
Wie könnte es kommen, dass ein Click auf den View keinen Fokus auf ihn setzt? Ich dachte, diese Fokusgeschichte wäre mehr oder weniger eine Win32-Sache. Die WM_LBUTTONDOWN-Nachrichten kommen auf jeden Fall beim View an, bloß bekommt er eigenständig einfach keinen Tastaturfokus.
-
Tja, wenn man OnActivateView überschreibt, aber vergisst, dabei an die Basisklasse zu delegieren, dann passiert sowas halt!