Cum "controlez" un control dintr-un common dialog?
Problema:
Am un dialog comun, sa zicem "File Open" si vreau (doar un exemplu), sa schimb textul unui control tip static.
Pare simplu, nu trebuie decat sa derivez din CFileDialog, sa suprascriu functia OnInitDialog iar acolo apelez GetDlgItem si SetWindowText sau direct SetDlgItemText (ID-ul controlului l-am gasit cu Spy++).
Nu merge. GetDlgItem intoarce NULL iar SetDlgItemText nu schimba absolut nimic.
Rezolvare:
De fapt, clasele derivate din CComonDialog (CFileDialog, CFontDialog, CColorDialog, etc) incapsuleaza un child al dialogului comun ce contine controalele. Deci trebuie sa-i gasim mai intai parent-ul.
Exemplu:
Cod: |
class CMyFileDialog : public CFileDialog { // ... // Overrides public: virtual BOOL OnInitDialog(); // ... }; #include <DLGS.H> // ... BOOL CMyFileDialog::OnInitDialog() { CFileDialog::OnInitDialog(); // ... GetParent()->SetDlgItemText(stc3, _T("Ala bala portocala")); // ... return TRUE; } |
NOTA: In exemplul de mai sus am folosit ID-ul 'stc3' definit in <DLGS.H>.