GetDlgItem-Funktion
-
Hi,
kann mir bitte jemand erklären was die GetDlgItem-Funktion macht ?
Ich habe bereits bei MSDN nachgesehen, doch ich werde aus dem Artikel
nicht so recht schlau.Vielen Dank,
mfg arena_blau
-
Wenn du z.B. ein DialogItem IDC_EDIT_MYEDIT hast (also ein Edit Control), dann kannst du es dir über diese Funktion holen (einen Zeiger darauf) und somit auf die Methoden/Eigenschaften zugreifen.
GetDlgItem(IDC_EDIT_MYEDIT)->SetWindowText(buffer);Das erspart dir eine Control-Variable (die aber manchmal einfach praktischer ist). Außerdem gibt es noch weitere nützliche Funktionen wie GetDlgItemInt, GetDlgItemText usw...
Bedenke, dass du ein CWnd* zurückbekommst. Wenn du spezifische Methoden aufrufen willst (z.B. GetCheck bei einer CheckBox), dann musst du die Rückgabe entsprechend casten. Hier wird dann langsam eine Control-Variable sinnvoller (zumindest bei mehrfacher Nutzung).
-
Zur Ergänzung was _matze schrieb:
Jedes Control kann eine ID zugeordnet bekommen, wenn es erzeugt wird (siehe CreateWindow). Eigentlich bräuchte man diese ID gar nicht, denn man könnte sich ja immer das Windows Handle für das Control merken. Das wäre aber dynamisch und man müsste sich hier eine eigene Verwaltung aufbauen wäre aber auch aufwendig.
Ein weiteres Problem hätte man mit Dialog Ressourcen. Hier erzeugt man ja nicht selber die Child Controls, sondern das macht Windows für einen. Wie soll man also gezielt an seine Controls rankommen? Enumerieren wäre auch hier aufwendig.
Geht eben nur über einen Identifier und das ist eben diese Dialog Control ID. In dem Fall macht das Windows für einen. Es enumieriert die Controls und sucht das ertse Control mit dieser entsprechenden ID.