Merkwürdiges und unerklärliches Verhalten einer Win32-Anwendung



  • Moin, Moin...

    Ich habe eine größere Win32-Anwendung geschrieben. Sie besitzt ein Fenster mit Toolbar(oben) und Statuszeile am unteren Rand. In diesem Fenster(Rahmenfenster) ist ein rahmenloses Kind-Fenster eingebettet(KEINE MDI-Anwendung). Wird die Größe des Rahmenfensters verändert, wird die Größe des Kind-Fensters automatisch angepasst, so dass es den Clientbereich des Rahmenfensters komplett ausfüllt. Soweit funktioniert auch alles ohne Probleme.

    Nun habe ich eine Funktion hinzugefügt. Diese Funktion wird aus einer Dialogprozedur aufgerufen. Dazu muss die Dialogbox natürlich geöffnet worden sein. Starte ich das Programm mit der hinzugefügten Funktion und ich verändere die Größe des Rahmenfensters, so verändert sich das Kind-Fenster plötzlich NICHT mehr. Die Größe bleibt wie sie ist. An der Nachrichtenverarbeitung habe ich aber überhaupt keine Veränderungen vorgenommen.
    Merkwürdigerweise tritt dieser Fehler nicht auf, wenn ich die Debug-Version erstelle und laufen lasse. Ich kann mir den Fehler nicht erklären, zumal ich einfach nur eine neue Funktion hinzugefügt habe, die mit der Nachrichtenverarbeitung der Fenster rein garnichts zu tun hat.

    Vielleicht hat ja jemand eine Idee(auch ohne Quellcode), denn ich bin mit meinem Latein am Ende.

    Danke im voraus...



  • Deine Beschreibung reicht nicht aus! Kannst du dir das nicht selber denken?!
    Du fügst also eine neue Funktion hinzu. OK. Funktioniert es denn schon nicht, wenn du die Funktion einfach hinzufügst, also den Prototypen und die Definition? Oder funzt es erst nicht mehr, wenn du die Funktion verwendest? Ein wenig Code wäre sicher auch hilfreich.



  • @WebFritzi:

    Es ist mir schon klar, dass eine einfache Beschreibung nur schwer geeignet ist, dass Problem zu erkennen. Das Programm ist zu umfangreich, um den Quellcode zu veröffentlichen und ich kenne die Ursache ja nicht. Welchen Teil des Quellcodes soll ich also posten? Ich hatte gehofft, dass irgendjemand so ein Verhalten schon mal gesehen hat. Irgendein kleiner Hinweis...

    Zu Deiner Frage: Ich habe nur den Quellcode der Funktion hinzugefügt und neu kompiliert. Sie wird im Programm überhaupt noch nicht aufgerufen. Das falsche Verhalten des Kind-Fensters zeigt sich sofort nach dem Starten, wenn ich gleich das Rahmenfenster vergrößere.

    Ciao...



  • Kal El schrieb:

    Zu Deiner Frage: Ich habe nur den Quellcode der Funktion hinzugefügt und neu kompiliert. Sie wird im Programm überhaupt noch nicht aufgerufen. Das falsche Verhalten des Kind-Fensters zeigt sich sofort nach dem Starten, wenn ich gleich das Rahmenfenster vergrößere.

    Danke! Das nenne ich eine vollständige Problembeschreibung, vor der ich allerdings genauso ratlos stehe wie du. Und alles ist wieder OK, wenn du die Funktion wieder rausnimmst? Der Code, wie du das Child der Größe des Parent anpasst, wäre aber vielleicht hilfreich.

    P.S.: Ach ja - welchen Compiler benutzt du?



  • Hallo,

    Debug-Version läuft, Release nicht, das sieht nach einem Programmfehler aus, ich tippe (mangels Quelltext bleibt nichts anderes übrig, ich habe auch noch nie von so einem Phänomen gehört) auf Speicher-Überschreiber, nicht initialisierte Variablen oder ähnliches...

    Ich kann verstehen, daß man in einem solchen Fall nicht den ganzen Quelltext posten kann (denn so ein Überschreiber kann überall sein), da es aber ziemlich am Anfang passiert, empfehle ich, das Programm Stück für Stück in Einzelteile zu zerlegen, Breakpoints zu setzen, Variableninhalte zu prüfen usw..., und auch mal ein paar Sachen auszukommentieren, um das Problem wenigstens einkreisen zu können

    MfG


Log in to reply