Absturz in der Release

anmae

Erfahrenes Mitglied
Hallo,

Habe einen ziemlich eigenartigen Fehler.
ich öffne über das Menü ein Modales Fenster. mit der Übergabe des Pointers einer Struktur.
Danach sende ich im Hauptfenster die Message das die Oberfläche anhand der Struktur neu gezeichnet werden soll (Bezeichnung der Buttons, Comboboxen,...)
Im Debug geht das ganze ohne Probleme, Warnungen oder ähnlichem, in der Releas stürzt er jedoch beim Oberfläche neu gestalten-Bzw bem senden der Message ab.

hier der Code beim Aufruf des Fensters:
Code:
 void CMonitorDlg::OnDateiEinstellungen() 
{
	CDialogSettings* dlg;
	dlg = new CDialogSettings(NULL,config);
	dlg->DoModal();
	config->generateConfig();	//Konfiguration neu laden
    this->SendMessage(WM_UPDATE_ACTIONBUTTONS);
}
Message:
Code:
resource.h:
#define WM_UPDATE_ACTIONBUTTONS         3005

Dlg.cpp:
	ON_MESSAGE(WM_UPDATE_ACTIONBUTTONS, GUIRecalc)

Dlg.h:
	afx_msg GUIRecalc();
Ich hatte das ganze auch mal ohne die Message getestet - also Funktion direkt aufgerufen - da gab es auch einen Absturz im Debug, desshalb der Umweg über die Message.
Der Absturz kommt aber selbst wenn ich nichts in der GUIRecalc mache, also alles auskommentiere.

Danke schonmal
Andres
 
Generell sollten eigene Messages in der Form definiert werden

Code:
define WM_UPDATE_ACTIONBUTTONS         WM_USER + ...

afx_msg LRESULT GUIRecalc();

Der Rückgabewert (LRESULT) ist wichtig. Falsche Parameter oder Funktionsdeklaration werden im Debug-Mode toleriert, führen aber bei Release zum Absturz.
 
ok, danke erstmal. Der Absturz kommt allerdings immernoch.
meine GUIRecalc:
Code:
 LRESULT  CMonitorDlg::GUIRecalc(){
return(1);
}

habe WM_USER + 1 genommen.

noch eine Idee?
 
So richtig Ideen eigentlich nicht, nur ein paar Fragen:

1.Wird die GUIRecalc eigentlich noch aufgerufen oder stürzt er schon bei SendMessage() selbst ab?
2. Hast du mal probiert, den SendMessage()-Befehl von einer anderen Stelle im Programm aufzurufen?
3. Was passiert, wenn du bei OnDateiEinstellungen() alles außer dem SendMessage() mal rausnimmst?
 
MCoder hat gesagt.:
1.Wird die GUIRecalc eigentlich noch aufgerufen oder stürzt er schon bei SendMessage() selbst ab?
kann ich ja leider nicht testen da ich in der Release keine breakepoints setzen kann

MCoder hat gesagt.:
2. Hast du mal probiert, den SendMessage()-Befehl von einer anderen Stelle im Programm aufzurufen?
habs mal in der OnInit gemacht -> Absturz

MCoder hat gesagt.:
3. Was passiert, wenn du bei OnDateiEinstellungen() alles außer dem SendMessage() mal rausnimmst?
Auch ein Absturz
 
Richtig, die erste Frage war etwas dämlich :)

Kannst du überhaupt irgendeine Message absetzen, etwa sowas wie SendMessage(WM_NULL, 0, 0); ?
 
ja, das ist kein Problem.
bin gerade mal auf die Idee gekommen eine Messagebox in der GUIRecalc auszugeben - das klappt.
Der Absturz tritt erst nach der Messagebox auf. Es muß also irgendwie an der Rückgabe liegen
 
hey, ich bin weiter.:

Code:
    this->PostMessage(WM_UPDATE_ACTIONBUTTONS);

so klappt es erst einmal.

Wenn jemand weiß warum das mit SendMessage nicht ging, dann würds mich aber schon noch interressieren.

Danke MCoder für die Mühe
 
also irgendwie klappt es doch noch nicht.

Habe gerade gemerkt das er jetzt beim zweiten Senden der Message abstürzt - mit der Variante kann ich also ein mal eine Message senden.
:suspekt:

Allerdings erst sobald ich die Maus bewege.
die Paint / Draw Funktionen habe ich nicht überschrieben.

grmpf
 
Zuletzt bearbeitet:
Zurück