[ Pobierz całość w formacie PDF ]
.if(FAILED(DDError)){return false;}// Zainicjalizuj interfejs DirectDraw dla urządzenia domyślnego (NULL).DDError=DirectDraw2Interface->Initialize(NULL);if(FAILED(DDError)){return false;}// Koniec wywołań COM.CoUninitialize();// Operacja zakończona pomyślnie.return true;Przedstawiony tu kod odwołuje się do interfejsu DirectDraw w wersji 2, zaś w przypadku jego nieznalezienia zwraca odpowiedni kod błędu.Znacznie lepszym rozwiązaniem byłoby oczywiście automatyczne wykorzystanie w programie najnowszej wersji interfejsu, jednak pozwolimy sobie pominąć to zagadnienie, jako że ograniczamy się tutaj do podstawowych elementów, dostępnych w każdej wersji standardu.Nie zmienia to faktu, że w praktycznych zastosowaniach zawsze warto korzystać z najnowszej wersji.Definiowanie ustawień ekranuStandard DirectDraw pozwala programiście zapomnieć o ograniczeniach związanych z bieżącymi ustawieniami pulpitu Windows, umożliwiając wybranie praktycznie dowolnego trybu pracy karty graficznej oraz działanie w trybie pełnoekranowym.Innymi słowy, projektant aplikacji ma do dyspozycji całą powierzchnię ekranu i może z nią robić, co zechce.Przed zmodyfikowaniem ustawień ekranu (rozdzielczości poziomej, pionowej oraz liczby kolorów) należy ustalić tzw.poziom współpracy lub uprzywilejowania (ang.cooperative level).Parametr ten określa sposób traktowania aplikacji przez system operacyjny oraz zasady jej współpracy z innymi programami.Użycie stałej DDSCL_EXCLUSIVE pozwala przekazać aplikacji pełną kontrolę nad zawartością ekranu; zsumowanie bitowe (operatorem |) powyższej stałej z DDSCL_FULLSCREEN umożliwia przejście do trybu pełnoekranowego, zaś stała DDSCL_NORMAL nakazuje programowi pozostanie w trybie okienkowym (nie można jej używać wraz z DDSCL_EXCLUSIVE - przyp.tłum.).Oprócz wymienionych tu wartości dostępnych jest jeszcze kilka innych, mniej istotnych stałych.Fragment kodu przedstawiony na wydruku 16.15 umożliwia przejście do trybu pełnoekranowego i przekazanie aplikacji wyłącznej kontroli nad zawartością ekranu.Wydruk 16.15.Przejście do trybu pełnoekranowego z wyłącznościąbool SetExclusiveMode(HWND Window){HRESULT DDError;if(DirectDraw2Interface==NULL)return(false);// Włącz tryb pełnoekranowy z wyłącznością.DDError = DirectDraw2Interface->SetCooperativeLevel(Window,DDSCL_ALLOWREBOOT |DDSCL_EXCLUSIVE |DDSCL_FULLSCREEN);// Niepowodzenie - zwróć informację o błędzie.if(DDError!=DD_OK){return(false);}return(true);}UwagaUżyta w wywołaniu funkcji SetCooperativeLevel() stała DDSCL_ALLOWREBOOT umożliwia użytkownikowi zamknięcie i ponowne uruchomienie systemu przez naciśnięcie klawiszy Alt+Ctrl+Delete.Interfejs DirectDraw pozwala także na programową zmianę bieżącej rozdzielczości ekranu (tj.SetDisplayMode():DirectDraw2Interface->SetDisplayMode(Width, Height, BitsPerPixel,RefreshRate, Flags);Parametry wywołania funkcji SetDisplayMode() opisano w tabeli 16.2.Tabela 16.2 [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • centka.pev.pl
  •