[Dialog] Über Controls iterieren ?
-
Hi,
ich hab einen Dialog und möchte unter einer Bedingung alle Controls bis auf zwei 'disablen'. Dazu wäre es gut, wenn ich über alle Controls iterieren könnte. Da müsste ich nicht bei jeder Änderung des Dialoges den Kode neu schreiben.
Aber wie kann man das umsetzten (Iteration über Controls)???Danke,
don_basto.
-
Wenn du mit GetDlgItem(nID) auf die Controls zugreifst, ist nID einfach nur eine Konstante die in der Resource.h definiert ist.
Dort kannst du sie richtig durchnummerieren und dann einfach iterieren..
-
Danke. Das wäre eine Möglichkeit. Aber dann müsste ich beim Hinzufügen daran denken, dass neue IDs in dem iterierten Bereich liegen, was nicht so schön ist. Ich hatte gehofft, dass es eine Funktion gibt, mit ich auf die Child-Controls des Dialogs zugreifen könnte. Dachte, dafür gibt's doch Klassen und oo.-Kram.
-
Vielleicht kannst du dir ja was aus den FAQ abkupfern:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-56428.html
-
Hatte den Beitrag gelesen. Schien mir allerdings umständlich. Wenn nicht anderes gibt, ist das zumindest mein Favorit.
-
Habs hinbekommen.
Hab eigentlich nur den FAQ-Beitrag modifiziert..BOOL CALLBACK CMyDlg::EnumChildProc(HWND hwnd,LPARAM lParam) { int nCtrlID = ::GetDlgCtrlID(hwnd); if (nCtrlID<10) return TRUE; //geschützte IDs if (lParam = 1) { // Ausschalten if ((nCtrlID==IDC_NEW)||(nCtrlID==IDC_LOAD)) { FromHandle(hwnd)->EnableWindow(TRUE); }else{ FromHandle(hwnd)->EnableWindow(FALSE); } } else { // Einschalten FromHandle(hwnd)->EnableWindow(TRUE); } return TRUE; }