# Winapi: Fensterhandle (HWND) speichern



## gajahputih (5. Juni 2007)

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


----------



## Endurion (5. Juni 2007)

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.


----------



## gajahputih (5. Juni 2007)

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


----------



## Endurion (6. Juni 2007)

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.


----------



## gajahputih (8. Juni 2007)

Hai Endurion,

Danke fuers Tips, es hat jetzt super funktioniert

grüß


----------

