X


Każdy jest innym i nikt sobą samym.

Kliknij przycisk OK, zatwierdzaj�c decyzj� i zamykaj�c okno.
Doda�e� zmienn� sk�adow� dla kontrolki w dialogu. Teraz musisz jeszcze doda� jedn� zmienn� dla warto�ci w tej kontrolce. Ponownie kliknij przycisk Add Variable, lecz tym razem jako nazw� zmiennej wpisz m_AlignmentValue, jako jej kategori� wybierz Value, za� jako jej rodzaj wybierz typ int. Kliknij przycisk OK, zatwierdzaj�c decyzj� i zamykaj�c okno. Zamknij okno ClassWizarda, zatwierdzaj�c utworzenie dw�ch nowych zmiennych sk�adowych.
Kod zarz�dzaj�cy wymian� danych pomi�dzy kontrolk� a arkuszem w�a�ciwo�ci umie�cimy wewn�trz funkcji DoDataExchange (). Otw�rz plik �r�d�owy MFCControlWinPpg.cpp i zlokalizuj funkcj� DoDataExchange (). Zwr�� uwag�, �e ClassWizard doda� dwie linie kodu do oryginalnej implementacji tej funkcji:
void CMFCControlWinPropPage::DoDataExchange(CDataExchange* pDX) {
//{{AFX_DATA_MAP(CMFCControlWinPropPage)
DDX_Control(pDX, IDC_ALIGNMENTCOMBO, m_AlignmentCombo) ;
DDX_CBIndex(pDX, IDC_ALIGNMENTCOMBO, m_AlignmentValue);
//}}AFX_DATA_MAP
DDP_PostProcessing(pDX);
}
DDX_control to standardowe makro MFC do �adowania warto�ci kontrolki do zmiennej sk�adowej klasy MFC. DDX_CBindex to standardowa funkcja MFC do pobierania i ustawiania bie��cego indeksu pozycji na rozwijanej li�cie na podstawie dostarczonej zmiennej (w tym przypadku m_AlignmentValue). Aby w pe�ni powi�za� kontrolk� z arkuszem w�a�ciwo�ci, musisz nieco zmodyfikowa� ten kod:
void CMFCControlWinPropPage::DoDataExchange(CDataExchange* pDX)
{
//{{AFX_DATA_MAP(CMFCControlWinPropPage)
DDX_Control(pDX, IDC_ALIGNMENTCOMBO, m_AlignmentCombo);
//}}AFX_DATA_MAP
if(!pDX->m_bSaveAndValidate)
{
// upewnij si�, �e wyczy�cili�my list� m_AlignmentCombo.ResetContent(); m_AlignmentCombo.AddString(_T("Do lewej"}); m_AlignmentCombo.AddString(_T("Do �rodka")); m_AlignmentCombo.AddString(_T("Do prawej"));
}
DDP_CBIndex(pDX, IDC_ALIGNMENTCOMBO, m_AlignmentValue,
_T("Alignment"));
DDX_CBIndex(pDX, IDC_ALIGNMENTCOMBO, m_AlignmentValue) DDP_PostProcessing(pDX);
this->SetModifiedFlag();
}
Zmodyfikowana funkcja robi znacznie wi�cej ni� orygina�. Po pierwsze, wype�nia rozwijan� list� poprawnymi warto�ciami, dzi�ki czemu arkusz w�a�ciwo�ci odpowiada
warto�ci w�a�ciwo�ci w kontrolce oraz w przegl�darce w�a�ciwo�ci. Poprzez sprawdzenie zmiennej m_bSaveAndValidate zapewniamy, �e te warto�ci s� �adowane tylko raz, podczas pierwszego wywo�ania arkusza. Innymi s�owy, kod zapewnia, �e arkusz w�a�ciwo�ci nie zachowuje i nie zatwierdza zawartych w nim danych.
W celu zapewnienia komunikacji pomi�dzy kontrolk� a arkuszem w�a�ciwo�ci musisz doda� przed wywo�aniem funkcji DDX_CBindex () wywo�anie funkcji DDp_CBindex {). Funkcja DDP_CBindex () instruuje MFC, by podczas �adowania dialogu pobra�o od kontrolki warto�� w�a�ciwo�ci Alignment i umie�ci�o j� w zmiennej sk�adowej m_Aiignmentvalue arkusza w�a�ciwo�ci. Podczas zamykania okna dialogowego funkcja DDP_CBindex () pobiera bie��cy indeks zaznaczonej pozycji rozwijanej listy i przypisuje t� warto�� w�a�ciwo�ci Alignment kontrolki. Funkcja DDP_CBindex{) musi by� wywo�ana przed funkcj� DDX_CBindex (), gdy� w przeciwnym razie arkusz w�a�ciwo�ci nie b�dzie poprawnie odzwierciedla� warto�ci w�a�ciwo�ci kontrolki.
Warto zapami�ta�, �e ten arkusz w�a�ciwo�ci wymaga specyficznej implementacji. Innymi s�owy, klasa �aduje kontrolk� rozwijanej listy do zmiennej sk�adowej m_Alignment-combo klasy arkusza w�a�ciwo�ci oraz �e konieczne jest za�adowanie pozycji wybranego elementu listy przed ustawieniem bie��cej pozycji na li�cie. Z powodu specjalnej implementacji arkusza w�a�ciwo�ci konieczne jest przesuni�cie linii DDP_CBindex {) oraz DDX_CBindex () z wn�trza makra AFX_DATA_MAP na zewn�trz w celu dokonania modyfikacji. Dzi�ki temu mo�na samemu modyfikowa� te pozycje. Oddzielanie linii w celu zaimple-mentowania funkcji DDP_CBindex () oraz DDX_CBindex () zwykle nie jest konieczne, jednak by�o jedynym rozwi�zaniem w naszym konkretnym przypadku.
Gdy usuwasz linie DDP_CBindex {} i DDX_CBindex () z wn�trza makr MFC, reprezentowane przez nie zmienne sk�adowe nie pojawi� si� w oknie dialogowym ClassWizarda, a ClassWizard nie b�dzie m�g� nimi automatycznie zarz�dza�.

Tematy

Drogi użytkowniku!

W trosce o komfort korzystania z naszego serwisu chcemy dostarczać Ci coraz lepsze usługi. By móc to robić prosimy, abyś wyraził zgodę na dopasowanie treści marketingowych do Twoich zachowań w serwisie. Zgoda ta pozwoli nam częściowo finansować rozwój świadczonych usług.

Pamiętaj, że dbamy o Twoją prywatność. Nie zwiększamy zakresu naszych uprawnień bez Twojej zgody. Zadbamy również o bezpieczeństwo Twoich danych. Wyrażoną zgodę możesz cofnąć w każdej chwili.

 Tak, zgadzam się na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerów w celu dopasowania treści do moich potrzeb. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

 Tak, zgadzam się na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerów w celu personalizowania wyświetlanych mi reklam i dostosowania do mnie prezentowanych treści marketingowych. Przeczytałem(am) Politykę prywatności. Rozumiem ją i akceptuję.

Wyrażenie powyższych zgód jest dobrowolne i możesz je w dowolnym momencie wycofać poprzez opcję: "Twoje zgody", dostępnej w prawym, dolnym rogu strony lub poprzez usunięcie "cookies" w swojej przeglądarce dla powyżej strony, z tym, że wycofanie zgody nie będzie miało wpływu na zgodność z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.