RicH and FamouS

       Home         Glosar IT                                                                                                                                                                                                              SUBSCRIBE NOW!
        

30.04.2009

MFC Tips - Common Dialogs

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>.

    Blog din Moldova    FastCounter 

 
Copyright © 2008-2010 Foster1. All rights reserved.