WinMain Zugriff auf Form oder: Wie verhindere ich dass die Form angezeigt wird
-
Hi!
In Meiner WinMain Funktion kann ich zwar eine von mir erstellte Methode aufrufen, aber nicht Hide(), oder Close();. Wenn ich die Form mit new erstelle statt über CreateForm, wie normal von der IDE vorgemacht, habe ich diese Form nicht mehr als MainWindow...
Ich möchte die Form nämlich Hiden, bzw. garnicht erst erscheinen lassen unter bestimmten Umständen.
Thx
-
So, ich bin selbst auf eine Lösung gekommen. Für alle anderen die das selbe Problem haben:
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); if(AnsiString(GetCommandLine()).UpperCase().Pos("/NOSPLASH") == 0) { frmSplash = new TfrmSplash(static_cast<void *> (NULL)); frmSplash -> Show(); Application -> ProcessMessages(); } Application->CreateForm(__classid(TForm1), &Form1); bool init = Form1->initialize(); while(!frmSplash->getClose() && init) { Application->ProcessMessages();} if( !init ) { Application->Run(); } } //...
-
Hallo
So wie das bei dir grad aussieht belegst du
a.) Speicher für ein manuell angelegtes TfrmSplash ohne Owner, das aber nie wieder freigegeben wird
b.) Wenn der entsprechende Parameter nicht vorhanden ist und frmSplash nicht erstellt wurde wird über den nun immer noch ungültigen Zeiger auf getClose zugegriffen.bis bald
akari
-
ja, stimmt, danke ist nun berichtigt
-
Was soll dieses static_cast<void *> (NULL) eigentlich? Eine einfache 0 tut es hier auch.
-
Ok