Zum Inhalt springen

DestroyWindow();


Filou

Empfohlene Beiträge

Noch eine kurze Frage...

Eben hat sich noch folgendes Problem aufgetan.

Ich möchte einen mit CreateDialog ezeugtes Fenster wieder schließen.

Ich denke mal, das geht mit DestroyWindow();

ABER: Laut MSDN muss ich das Handle des Fensters als Parameter übergen, dass geschlossen werden soll. Also DestroyWindow(wnd);

Nur leider geht das nicht. Der Compiler sagt:

AktivirenDlg.cpp

D:\Eigene Dateien\Projekte\setup\AktivirenDlg.cpp(72) : error C2660: 'DestroyWindow' : Funktion akzeptiert keine 1 Parameter

Fehler beim Ausführen von cl.exe.

Browse-Informationsdatei wird erstellt...

Setup.exe - 1 Fehler, 0 Warnung(en)

Was mache ich falsch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

also ich rufen von einem dialog ein anderen dialog auf, den ich mit CreateDialog erzeuge, damit er nicht modal ist. Jetzt möchte ich von dem untergeordneten dialog den eben erzeugten wieder schließen.

Das ganze soll nämlich nur eine Benachrichtigung einblenden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

der Compiler hat recht! Verwende einfach die Klassenfunktion (ohne Parameter):

Wenn Filou CreateDialog benutzt, dann gibt es keine Klasse.

Filou: Was gibt dir ::DestroyWindow zurück? Bist du sicher, dass das Fensterhandle richtig ist? Im Zweifelsfall kannst du es z.B. mit Spy++ prüfen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn Filou CreateDialog benutzt, dann gibt es keine Klasse.

Filou: Was gibt dir ::DestroyWindow zurück? Bist du sicher, dass das Fensterhandle richtig ist? Im Zweifelsfall kannst du es z.B. mit Spy++ prüfen.

Welches Fensterhandle meinst Du?

Wie gesagt, Laut MSDN muss ich das handle ja übergeben DestroyWindow(wnd); aber genau das geht ja nicht.

Ich habe es so gemacht, dass dieses Fenster eingeblendet werden man auf den OK Button klickt. Dann soll es etwas ausrechnen und den Dialog wieder schließen.

Link zu diesem Kommentar
Auf anderen Seiten teilen


void CAktiverenDlg::OnOk() 

{

CManualAktiverenDlg NextDlg;

CKeyDlg WaitDlg;

HINSTANCE hInst;

HWND hWnd;


//Schaltflächen deaktivieren

m_key.EnableWindow(FALSE);

m_ok.EnableWindow(FALSE);

m_Cancel.EnableWindow(FALSE);


//Bitte warten Dilaog einblenden

hInst = GetModuleHandle(NULL);

hWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_INSTALLKEYGEN), *this, NULL);

AnimateWindow(hWnd,1000, AW_BLEND);	


//Key berechnen

Sleep(3000);

//....

WaitDlg.DestroyWindow();


NextDlg.DoModal();


//Schaltflächen aktivieren

m_key.EnableWindow(TRUE);

m_ok.EnableWindow(TRUE);

m_Cancel.EnableWindow(TRUE);	



//Prüfen ob installationskey gültig ist

if (g_bActivate == TRUE)

	this->EndDialog(0);

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Cool, hat funktioniert!! Danke!!!!!! :)
Das hat TinTin aber schon ein paar Beiträge vorher geschrieben ;)

Aber wieso das jetzt geht hab ich nicht kapiert
Wieso sollte das nicht gehen? Falls du dich über die :: wunderst: Dein Code steht in einer Memberfunktion einer Klasse, die eine Methode DestroyWindow hat. Es gibt auch eine globale Funktion DestroyWindow, aber innerhalb einer Memberfunktion werden immer zuerst die Methoden nach dem Namen durchsucht, auch wenn dann keine Funktion gefunden wird, deren Signatur passt (hier: CWnd:: DestroyWindow(), ohne Parameter).

Wenn du die globale Funktion aufrufen willst, musst du das mit dem Namensraumoperator :: machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das hat TinTin aber schon ein paar Beiträge vorher geschrieben ;)

Wieso sollte das nicht gehen? Falls du dich über die :: wunderst: Dein Code steht in einer Memberfunktion einer Klasse, die eine Methode DestroyWindow hat. Es gibt auch eine globale Funktion DestroyWindow, aber innerhalb einer Memberfunktion werden immer zuerst die Methoden nach dem Namen durchsucht, auch wenn dann keine Funktion gefunden wird, deren Signatur passt (hier: CWnd:: DestroyWindow(), ohne Parameter).

Wenn du die globale Funktion aufrufen willst, musst du das mit dem Namensraumoperator :: machen.

Ach, jetzt verstehe ich.

Aber es ging halt erst mit dem

BOOL ret = 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...