Index www nie com pl 2 ZESZYT2 (2) Krzywa Sweetmana Adams Douglas Restauracja na koncu wszechswiata abc.com.pl 9 10 List VII Issac Asimov Nemesis (2) Chmielewska Joanna (Nie)boszczyk maz (5) Johnson P. Bóg Bolesław Prus Lalka |
[ Pobierz całość w formacie PDF ] .message==WM_QUIT|| komunikat.message==WM_KEYDOWN) break; TranslateMessage(&komunikat); DispatchMessage(&komunikat); }} //To jest pętla komunikatów, dzięki którejkomputer reaguje na nasze polecenialpDDSEkran->Release();lpDD4->RestoreDisplayMode();lpDD4->Release();//Zwolnienie powierzchni ekranu, przywrócenietrybu graficznego, zwolnienie obiektu lpDD4return komunikat.wParam; //Wartośćktórą zwraca funkcja WinMain} //Koniec funkcji WinMainLRESULT CALLBACK PetlaKomunikatow (HWND okno, UINTkomunikat, WPARAM wParam, LPARAM lParam){switch (komunikat) { case WM_DESTROY: PostQuitMessage (0); break; default: return( DefWindowProc (okno, komunikat, wParam,lParam)); }return 0;}//Pętla komunikatów odpowiadająca na nasze reakcje//====THEEND czyli KONIEC====\\\v/ (Stąd możesz skopiować kod bezpośrednio do edytora) \v/#include <windows.h>#include <ddraw.h>LPDIRECTDRAW lpDD;LPDIRECTDRAW4 lpDD4;LPDIRECTDRAWSURFACE4 lpDDSEkran;HWND okno;HDC kontekst;LRESULT CALLBACK PetlaKomunikatow(HWND, UINT, WPARAM, LPARAM);char klasa[] = "Nazwa nazwa klasy okna";int WINAPI WinMain(HINSTANCE naszprogram, HINSTANCE, LPSTR, int tryb){WNDCLASS KlasaOkna;KlasaOkna.lpszClassName = klasa;KlasaOkna.hInstance = naszprogram;KlasaOkna.lpfnWndProc = PetlaKomunikatow;KlasaOkna.style = CS_OWNDC;KlasaOkna.lpszMenuName = NULL;KlasaOkna.hIcon = LoadIcon(NULL, IDI_WINLOGO);KlasaOkna.hCursor = LoadCursor(NULL, IDC_ARROW);KlasaOkna.hbrBackground = (HBRUSH)(COLOR_WINDOW + 2);KlasaOkna.cbClsExtra = 0;KlasaOkna.cbWndExtra = 0;RegisterClass(&KlasaOkna);okno = CreateWindow( klasa,"Programowanie DirectX",WS_EX_TOPMOST|WS_POPUP,0,0,800,600,NULL,NULL,naszprogram,NULL);ShowWindow(okno, tryb);DirectDrawCreate(NULL, &lpDD, NULL);lpDD->QueryInterface(IID_IDirectDraw4, (LPVOID *)&lpDD4);lpDD->Release();lpDD4->SetCooperativeLevel(okno, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);lpDD4->SetDisplayMode (800, 600, 16, 0, NULL);DDSURFACEDESC2 ddsd;ZeroMemory(&ddsd, sizeof(ddsd));ddsd.dwSize = sizeof(ddsd);ddsd.dwFlags = DDSD_CAPS;ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;if(DD_OK==lpDD4->CreateSurface(&ddsd,&lpDDSEkran, NULL)) MessageBox(okno,"Powierzchnia stworzona :)","Powierzchnia",MB_OK);HDC hdcmem;HBITMAP hbmp;hdcmem=CreateCompatibleDC(NULL);hbmp=(HBITMAP)LoadImage(naszprogram,"tlo.bmp",IMAGE_BITMAP, 800, 600,LR_LOADFROMFILE);SelectObject(hdcmem,hbmp);lpDDSEkran->GetDC(&kontekst);BitBlt(kontekst,0,0,800,600,hdcmem,0,0,SRCCOPY);DeleteObject(hbmp);DeleteDC(hdcmem);lpDDSEkran->ReleaseDC(kontekst);MSG komunikat;for(;;){if (PeekMessage(&komunikat,NULL,0,0,PM_REMOVE)){if (komunikat.message==WM_QUIT || komunikat.message==WM_KEYDOWN) break;TranslateMessage(&komunikat);DispatchMessage(&komunikat);}}lpDDSEkran->Release();lpDD4->RestoreDisplayMode();lpDD4->Release();return komunikat.wParam;}LRESULT CALLBACK PetlaKomunikatow(HWND okno, UINT komunikat, WPARAM wParam, LPARAM lParam){switch( komunikat ){case WM_DESTROY:PostQuitMessage( 0 );break;default:return( DefWindowProc( okno, komunikat, wParam, lParam ));}return 0;}\v/ (Tak wygląda efekt działania naszego programu) \v/ZakończenieDzięki powyższemu kodowi zainicjalizowaliśmy i zwolniliśmy tryb DirectDraw.Myślę, że wyświetlenie bitmapy na ekranie po przejrzeniu tego arta niebędzie już stwarzało problemu.Już wkrótce następna część serii programowaniaz wykorzystaniem DirectX.Acha - program wymaga zainstalowanych bibliotekDirectX w wersji przynajmniej 5.!Materiaływykorzystane w tym artykule:!(c) 2001 by Game Design PL - http://www.warsztat.px.pl [ Pobierz całość w formacie PDF ] |
||||
Wszelkie Prawa Zastrzeżone! Kawa była słaba i bez smaku. Nie miała treści, a jedynie formę. Design by SZABLONY.maniak.pl. | |||||