X


Historia wymaga pasterzy, nie rzeźników.

1Val){ case EALIGN_CENTER:
m_lAlignment = EALIGN_CENTER;
break; case EALIGN_RIGHT:
m_lAlignment = EALIGN_RIGHT;
break; case EALIGN_LEFT:
m_lAlignment = EALIGN_LEFT;
break; }
// ustawiamy zwracan� warto�� IResult = TRUE;
else {
/*
W tym punkcie mo�esz albo zg�osi� problem zwi�zany z konwersja danych lub zmieni� typ zwracany przez metod� i zwr�ci� warto�� HRESULT z wywo�ania YariantChangeType ( ) . */
}
}
// je�li warto�� wyr�wnania jest niew�a�ciwa if (m_lAlignment < EALIGN_LEFT ||
m_lAlignment > EALIGN_RIGHT)
// ustaw domy�ln� warto��
m_lAlignment = EALIGN_LEFT;
// je�li wszystko jest w porz�dku
if(TRUE == IResult)
{
// je�li mamy �a�cuch
if (IpctstrCaption != NULL)
// przypisujemy �a�cuch naszej zmiennej sk�adowej m_cstrCaption = IpctstrCaption;
// czy otrzymali�my b��dne dane? if (m_lAlignment < EALIGN_LEFT ||
m_lAlignment > EALIGN_RIGHT)
// tak, ustaw domy�ln� warto��
m lAlignment = EALIGN LEFT;
// wymuszamy odmalowanie kontrolki this->InvalidateControl() ;
}
// zwracamy wynik wywo�ania funkcji return IResult;
Najpierw metoda pr�buje obs�u�y� domy�lny parametr sprawdzaj�c, czy wariant zawiera rzeczywi�cie to, czego chcemy, VT_I4, co odpowiada typowi long. Je�li wariant nie zawiera typu long, metoda sprawdza, czy w og�le zosta�y przekazane jakie� dane, sprawdzaj�c typy VT_ERROR i VT_EMPTY. Sprawdzenie danych jest konieczne, poniewa� ten parametr jest opcjonalny. Parametr VARIANT mo�e zawiera� dane, ale nie musi, trzeba wi�c nie tylko sprawdza� poprawno�� danych, ale tak�e ich obecno��. Je�li nie zostan� dostarczone �adne dane, metoda skorzysta z warto�ci ju� wcze�niej umieszczonej w zmiennej sk�adowej m_iAiignment.
Pewne sterowniki automatyzacji, takie jak Yisual Basic, nie wymagaj�, by przy wywo�ywaniu metody by� dostarczany kt�rykolwiek z opcjonalnych parametr�w. Na przyk�ad, z Visual Basica metod� captionMethod () mo�esz wywo�a� nast�puj�co:
MyObject.CaptionMethod "Hello"
lub ewentualnie tak:
MyObject.CaptionMethod "Hello", True
Yisual Basic automatycznie przekazuje w zmiennej VARIANT typ VT_ERROR dla ka�dego z parametr�w, kt�re zosta�y pomini�te w wywo�aniu metody. Dla sterownik�w automatyzacji wywo�uj�cych standardow� metod� OLE invoke (), takich jak C++, wywo�uj�cy sterownik musi zdefiniowa� wszystkie parametry, nawet je�li kontrolka lub kontener z nich nie korzystaj�. W tym konkretnym przypadku, gdy wywo�ujemy metod�, mamy do wyboru ustawienie typu wariantu na VT_ERROR lub VT_EMPTY.
Podczas przetwarzania opcjonalnych parametr�w oparcie si� na wbudowanych w OLE procedurach konwersji typ�w wariant�w w poszukiwaniu okre�lonego typu danych gwarantuje, �e kontrolka b�dzie mog�a obs�u�y� ka�d� przekazan� j ej dan�.
Je�li wariant zawiera inny poprawny typ danych inny ni� VT_I4, metoda pr�buje skon-wertowa� go na typ VT_I4. Dzi�ki temu mo�emy obs�u�y� przypadki, gdy u�ytkownik przekazuje poprawn� lecz innego typu warto��, na przyk�ad short lub �a�cuch.
Zwr�� uwag� na u�ycie funkcji Variantinit (). Bardzo wa�ne jest, by Twoje programy inicjowa�y przed u�yciem wszystkie zmienne typuVARIANT. Dzi�ki temu b�dziesz mia� pewno��, �e te zmienne nie b�d� zawiera�y b��dnych informacji o typie ani b��dnych warto�ci. Wywo�anie Variantinit () w celu zainicjalizowania zmiennych VARIANT jest zgodne z obowi�zuj�c� w C++ tendencj� do inicjalizowania zmiennych sk�adowych w celu zapewnienia, �e nie b�d� one zawiera� b��dnych informacji.
Je�li wymagania co do kontrolki okre�laj� u�ycie tylko specyficznych typ�w danych, mo�esz tak�e doda� kod (komunikaty b��d�w, wyj�tki itd.) reaguj�cy na fakt nieotrzymania przez kontrolk� odpowiedniego typu danych. W przypadku naszej metody caption-Method (), je�li funkcja YariantchangeType (} nie b�dzie w stanie dokona� konwersji danych, metoda ko�czy dzia�anie, zwracaj�c warto�� FALSE. Zwr�cenie warto�ci FALSE informuje funkcj� wywo�uj�c�, �e wykonanie metody si� nie powiod�o. Tak�e w tym przypadku mo�esz zastosowa� dodatkowy kod obs�ugi b��d�w w celu przekazania u�ytkownikowi jakich� dodatkowych informacji o b��dzie.

Podstrony

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.