[ Pobierz całość w formacie PDF ]
.16 Uzyskiwanie informacji o znaku zodiaku za pomocą klasycznego interfejsuvoid __fastcall TMainForm::btnDetailedZodiacClick(TObject *Sender){TDateTime TheDate(FCalendar->Date);unsigned short year = 0;unsigned short month = 0;unsigned short day = 0;TheDate.DecodeDate(&year, &month, &day);// ukryte wywołanie QueryInterface():IDetailedZodiacPtr DetailedZodiac = FZodiac;if (!chkAsync->Checked){TDetailedZodiacSignImpl DetailedSign;OLECHECK(DetailedZodiac->GetDetailedZodiacSign(day, month, &DetailedSign));memLog->Lines->Add(_T("Zodiac detailed information:"));memLog->Lines->Add(_T(" Sign = ") + AnsiString(DetailedSign.Sign));memLog->Lines->Add(_T(" House = ") + IntToStr(DetailedSign.House));memLog->Lines->Add(_T(" Type = ") + AnsiString(DetailedSign.Element));memLog->Lines->Add(_T(" Planet = ") + AnsiString(DetailedSign.Planet));memLog->Lines->Add(_T(" Details = ") + AnsiString(DetailedSign.Details));memLog->Lines->Add(_T(" Tip = ") + AnsiString(DetailedSign.Advice));memLog->Lines->Add(_T(""));memLog->Lines->Add(_T(""));}else{OLECHECK(DetailedZodiac->GetDetailedZodiacSignAsync(day, month));}}Funkcja btnDetailedZodiacClick() jest bardzo podobna do prezentowanej wcześniej funkcji btnZodiacClick; najistotniejsze różnice zaznaczyliśmy czcionką wytłuszczoną.Tworzenie ujścia zdarzeń opartego na klasycznym interfejsiePonownie potrzebny jest obiekt COM po stronie klienta, tym razem w celu implementacji interfejsu IDetailedZodiacEvents.Jego konstrukcja staje się zadaniem względnie nieskomplikowanym dzięki bibliotece ATL — skonstruujemy mianowicie szablon, na bazie którego w prosty sposób definiować można będzie klasy implementujące różne rodzaje ujść zdarzeń.Kod źródłowy tego szablonu, prezentowany na wydruku 16.17, znajduje się także w pliku CustomSinks.h na załączonym CD-ROMie.Wydruk 16 [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • drakonia.opx.pl
  • Linki