Korzystanie z właściwości otoczeniaChoć możesz ich używać, nie definiujesz ich w swoim kodzie...

Linki


» Dzieci to nie książeczki do kolorowania. Nie da siÄ™ wypeÅ‚nić ich naszymi ulubionymi kolorami.
»
Czy właścicielowi sklepu opłaca się pamiętać swoich klientów? Albo lekarzowi swoich pacjentów, czy prawnikowi swoich podopiecznych? Jasne, że tak...
»
współobywatelom, że wÅ‚aÅ›ciwie jego wypychano, ażeby siÄ™ biÅ‚ z synem margrabiego o obra- zÄ™ ksiÄ™cia Napoleona – mais je leur ai dit 353 –...
»
Po wejœciu Wooda do zespo³u, choæ na razie tylko tymczasowym, zaczê³o siê wyczuwaæ obecnoœæ elementu przyjaŸni, o której w przypadku Taylora trudno w³aœciwie by³o mówiæ...
»
dwudziestka— bardzo maÅ‚o, a dolna — wÅ‚aÅ›ciwie nic...
»
Nie tłumaczyłam Tosi, że ta sprzedawczyni mogła okazać się kierowniczką albo właścicielką, albo czymkolwiek...
»
— Nie wiem, o co mnie oskarżasz — powiedziaÅ‚a i wÅ‚aÅ›ciwie nie do koÅ„ca byÅ‚o to kÅ‚amstwem...
»
Z początku Jaina była zaskoczona, że mały statek leci znów właściwym kursem, potem jednak uświadomiła sobie, że nie ma w tym nic nadzwyczajnego...
»
Aspekt personalistyczny ukazuje zatem godnoœæ osoby ludzkiej i jej zdolnoœæ rozwoju do pe³ni, sobie tylko w³aœciwej, osobowej doskona³oœci...
»
W³aœciwoœci i zastosowaniaOlejek cytrynowy stosowany jest powszechnie jako œrodek smakowy w artyku³ach spo¿ywczych, a tak¿e w kosmetykach (pasty do zêbów)...
»
– SkoroÅ› go nie widziaÅ‚, skÄ…d możesz wiedzieć, że byÅ‚ na strychu? – Toć jego wÅ‚asna żona musiaÅ‚a chyba wiedzieć, gdzie przebywa! –...

Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.

W przypadku standar­dowych wÅ‚aÅ›ciwoÅ›ci otoczenia, MFC dostarcza prostych funkcji, zwracajÄ…cych ich wartoÅ›ci (patrz tabela 8.1). Możesz także uzyskać wartość każdej wÅ‚aÅ›ciwoÅ›ci otoczenia; sÅ‚uży do tego funkcja GetAmbientProperty. OczywiÅ›cie musisz wtedy znać identyfikator DISPID danej wÅ‚aÅ›ciwoÅ›ci.
Tabela 8.1. Standardowe funkcje zwracające właściwości otoczenia.
Funkcja
AmbientAppearance AmbientBackColor AmbientDisplayName AmbientFont AmbientForeColor AmbientLocaleID
AmbientScale Units AmbientTextAlign AmbientUserMode AmbientUIDead AmbientShowGrabHandles AmbientShowHatching
 
Dodawanie metod
Gdy zechcesz dodać metodÄ™, na zakÅ‚adce Automation ClassWizarda kliknij na przycisku AddMethod. Pojawi siÄ™ okno dialogowe, które możesz wykorzystać do stworzenia me­tod (rys. 8.4). Każda metoda może posiadać do 16 parametrów.
JeÅ›li prawidÅ‚owo korzystasz z wÅ‚aÅ›ciwoÅ›ci, niezbyt czÄ™sto bÄ™dziesz używaÅ‚ metod. Przypuśćmy, że chcesz stworzyć metodÄ™ o nazwie Open, sÅ‚użącÄ… do otwarcia pliku. Dlaczego zamiast niej nie miaÅ‚byÅ› dostarczyć wÅ‚aÅ›ciwoÅ›ci FileName? Wtedy, gdy wÅ‚a­Å›ciwość siÄ™ zmieni, możesz przeprowadzić otwarcie pliku.
Przeglądarka WWW nie współpracuje bezpośrednio z metodami kontrolek, jednak języki skryptów potrafią je wywoływać. Strony i serwery WWW mogą wykorzystać języki skryptów do zarządzania skomplikowaną zawartością HTML, zawierającą także kontrolki ActiveX.
 
Dodawanie zdarzeń
DziÄ™ki ClassWizardowi dodawanie zdarzeÅ„ jest bardzo Å‚atwe. Najpierw kliknij na zakÅ‚adce ActiveX Events. NastÄ™pnie nazwij zdarzenie (lub wybierz nazwÄ™ zdarzenia magazyno­wego). Zdarzenia mogÄ… przyjąć do 15 argumentów, podawanych w dolnej części okna (rys. 8.8).
ClassWizard automatycznie generuje kompletną funkcję odpalającą zdarzenie (nazwa funkcji rozpoczyna się od słowa Fire, na przykład FireClick). Nie musisz robić nic więcej. Gdy chcesz odpalić zdarzenie, po prostu wywołaj funkcję odpalającą. Oczywiście musisz przekazać odpowiednie argumenty, zgodnie z tymi, które określiłeś podczas tworzenia zdarzenia.
Standardowy kod MFC domyÅ›lnie odpala kilka magazynowych zdarzeÅ„. I tak, gdy kontrolka wykryje wciÅ›niÄ™cie klawisza (komunikat WM_CHAR), wywoÅ‚uje funkcjÄ™ FireKeyPress, chyba że przesÅ‚oniÅ‚eÅ› komunikat OnChar i nie wywoÅ‚ujesz klasy pod­stawowej. W tabeli 8.2 znajdziesz listÄ™ komunikatów okienkowych konwertowanych przez MFC do zdarzeÅ„.
Tabela 8.2. Zdarzenia odpalane automatycznie
Komunikat Zdarzenie
WM_KEYUP FireKeyUp
WM_KEYDOWN FireKeyDown
WM_CHAR FireKeyPress
WM_?BUTTONDOWN FireMouseDown
WM_?BUTTONUP FireMouseUp
WM_MOUSEMOVE FireClick
Symbol “?" oznacza rodzinę komunikatów
 
Przeglądarka WWW w rzeczywistości nie interesuje się zdarzeniami pochodzącymi od kontrolek. Mogą jednak wyłapywać je języki skryptów (takie jak YBScript lub Java-Script).
 
Dodawanie arkuszy właściwości
Choć nie jest to obowiązkowe, wiele kontrolek ActiveX posiada arkusze właściwości. Dzięki nim użytkownicy mogą wyświetlić okno dialogowe i ustawić wszelkie właściwości. Pojemniki implementują to polecenie przy pomocy metody IOleObject::DoVerb, żądając wykonania operacji OLEIVERB_PROPERTIES. Jak zwykle, MFC znacznie ułatwia implementację także i tej cechy kontrolek.
Kreator Control Wizard w sekcji zasobów dotyczÄ…cej dialogów umieszcza puste okno dialogowe. Możesz do niego dodać kontrolki (na przykÅ‚ad pola edycji), tak jak do każdego innego dialogu. Aby powiÄ…zać kontrolki z odpowiednimi wÅ‚aÅ›ciwoÅ›ciami ActiveX, użyj zakÅ‚adki Member Yariables okna ClassWizard. Możesz powiÄ…zać kontrolkÄ™ ze zmiennÄ… lub wÅ‚aÅ›ciwoÅ›ciÄ… - ClassWizard zajmie siÄ™ resztÄ…. WypeÅ‚niajÄ…c odpowiednie pola w oknie ClassWizarda możesz nawet filtrować wprowadzane wartoÅ›ci. Możesz ograni­czyć do okreÅ›lonego zakresu wartość zmiennej caÅ‚kowitej lub ograniczyć ilość znaków wprowadzanego ciÄ…gu.
Oprócz normalnych arkuszy wÅ‚aÅ›ciwoÅ›ci, możesz doÅ‚Ä…czyć dodatkowe arkusze dodajÄ…c je do sekcji BEGIN_PROPPAGEIDS pliku źródÅ‚owego. Istnieje kilka standardowych arkuszy wÅ‚aÅ›ciwoÅ›ci dla elementów takich jak czcionki czy kolory, które możesz dodać bez żadnego wysiÅ‚ku. W przypadku kolorów użyj CLSID_CColorPropPage, dla ob­razków użyj CLSID_CPisturePropPage, zaÅ› dla czcionek - CLSID_CFontPropPage.
Przykład dodania arkusza właściwości koloru znajdziesz w dalszej części rozdziału.
 
Analiza wygenerowanych plików
Gdy do rozpoczÄ™cia projektu wykorzystujesz Control Wizarda, generuje on trzy ważne pliki CPP. Pierwszy z nich nosi tÄ™ samÄ… nazwÄ™ co projekt; plik zawiera obiekt wypro­wadzony z COleControIModule. Jest to podstawowa klasa reprezentujÄ…ca kontrolkÄ™ ActiveX. JeÅ›li potrzebujesz jakiegokolwiek kodu, który ma być wykonywany podczas Å‚adowania lub wyÅ‚adowywania kontrolki, możesz dodać go wÅ‚aÅ›nie w tym pliku.
Ten sam plik zawiera także funkcje zajmujące się samodzielną rejestracją. Zwykle nie ma potrzeby ich modyfikacji, gdyż dobrze wykonują swoje zadanie.
Najważniejszy plik generowany przez MFC ma takÄ… nazwÄ™ jak nazwa projektu, lecz z dodanymi literami CTL (na przykÅ‚ad PROJCTL.CPP). Ten plik zawiera obiekt wy­prowadzony z COleControl. WiÄ™kszość wprowadzanych zmian, zarówno rÄ™cznych, jak i automatycznych, odnosi siÄ™ wÅ‚aÅ›nie do tego pliku. W nim znajduje siÄ™ funkcja OnDraw, a także wszystkie funkcje zdarzeÅ„, wÅ‚aÅ›ciwoÅ›ci i metod kontrolki.
Ostatnim plikiem źródÅ‚owym tworzonym przez MFC jest plik o nazwie projektu, z doda­nymi literami PPG (na przykÅ‚ad PROJPPG.CPP). W tym pliku znajdziesz obiekt reprezen­tujÄ…cy głównÄ… stronÄ™ wÅ‚aÅ›ciwoÅ›ci. Ten obiekt jest wyprowadzony z klasy podstawowej COlePropertyPage. Zwykle nie trzeba modyfikować tego pliku, chyba że poprzez ClassWizarda.
 
Testowanie i wykorzystanie kontrolki

Powered by MyScript