Winapi: Fensterhandle (HWND) speichern

gajahputih

Grünschnabel
Hallo zusammen,

Weisst jemand wie man Fensterhandle speichern kann? Ich möchte einen Listbox mittels SetDlgItemText() ansprechend und habe meine HWND hDlg als globalvariable gemacht.

Nachdem das Dlg erstellt wurde versuche ich meiner ListBox anzusprechend. Hierbei passiert kommisches, hDlg hat ein wert von 0.

Gibt es einen Weg den Fensterhandle bei einem bereits erstellten Fenster nochmal anzusprechen?

Danke für die Aufklärung
 
Du kannst ein HWND wie ein int behandeln, im Hintergrund ist es nicht mehr als ein Zeiger.

Wenn da 0 drin ist, dann hast du da beim Speichern etwas falsch gemacht.

Wie wird die ListBox erzeugt? Über Resourcen oder manuell mit CreateWindow?

So oder so kannst du evtl. auch das HWND der ListBox speichern.
 
Hallo Endurion,

vielen dank für die Antwort. Ich habe mein Dialog mittels CreateDialog() erzeugt. Syntax
gwxDlg = CreateDialog(gwxModule,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc);
Diese befindet sich in einem Thread.

Problem ist, sobald den Thread fertig mit dem Ausführung ist, wird die gwxDlg = 0, obwohl ich den als Globalvariable definiert habe.

Meiner letzte Versuch ist HWND in einer Struktur zu speichern. Leider als ich diese in eine Subroutine aufrufe schmiert das Programm ab, debugger gibt Illegale speicher belegung. Ein versuch mit GetLastError() den Fehlermeldung abzufangen ist nicht erfolgreich.

Deshalb bin ich ein wenig ratlos
 
Dass die Variable NULL ist, müsstest du mit dem Keyword volatile beheben können:

volatile HWND gwxDlg;

Du musst mit HWNDs in anderen Threads vorsichtig sein, gibt es denn da dann auch eine MessagePump? Sonst reagiert der Dialog ja auf gar nichts.
 

Neue Beiträge

Zurück