All pastes #822683 Raw Edit

MuffinFlavored

public cpp v1 · immutable
·published 2007-12-18 21:55 UTC
rendered paste body
// include the basic windows header files and the Direct3D header file#include <windows.h>#include <windowsx.h>#include <d3d9.h>#include <d3dx9.h>#include <stdio.h>// define the screen resolution and keyboard macros#define SCREEN_WIDTH  1280#define SCREEN_HEIGHT 1024#define PICTURE_WIDTH 632#define PICTURE_HEIGHT 395#define KEY_DOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)#define KEY_UP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)// include the Direct3D Library file#pragma comment (lib, "d3d9.lib")#pragma comment (lib, "d3dx9.lib")// global declarationsLPDIRECT3D9 d3d;    // the pointer to our Direct3D interfaceLPDIRECT3DDEVICE9 d3ddev;    // the pointer to the device classLPD3DXSPRITE d3dspt;    // the pointer to our Direct3D Sprite interfaceLPD3DXFONT dxfont;    // the pointer to the font object// sprite declarationsLPDIRECT3DTEXTURE9 sprite;    // the pointer to the sprite// function prototypesvoid initD3D(HWND hWnd); // sets up and initializes Direct3Dvoid render_frame(void); // renders a single framevoid cleanD3D(void); // closes Direct3D and releases memoryint mousepos(void);int mousepos(int x) {	POINT point;	GetCursorPos(&point);	if (x==1) {		return point.x;	}	else {		return point.y;	}}// the WindowProc function prototypeLRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);// the entry point for any Windows programint WINAPI WinMain(HINSTANCE hInstance,                   HINSTANCE hPrevInstance,                   LPSTR lpCmdLine,                   int nCmdShow){    HWND hWnd;    WNDCLASSEX wc;    ZeroMemory(&wc, sizeof(WNDCLASSEX));    wc.cbSize = sizeof(WNDCLASSEX);    wc.style = CS_HREDRAW | CS_VREDRAW;    wc.lpfnWndProc = (WNDPROC)WindowProc;    wc.hInstance = hInstance;    wc.hCursor = LoadCursorFromFile("C:\\Documents and Settings\\Owner\\My Documents\\MuffinFlavoreds Application\\crazy1.ani");    wc.lpszClassName = "WindowClass1";    RegisterClassEx(&wc);    hWnd = CreateWindowEx(NULL,                          "WindowClass1",                          "Our Direct3D Program",                          WS_EX_TOPMOST | WS_POPUP,                          0, 0,                          SCREEN_WIDTH, SCREEN_HEIGHT,                          NULL,                          NULL,                          hInstance,                          NULL);    ShowWindow(hWnd, nCmdShow);    // set up and initialize Direct3D    initD3D(hWnd);    // enter the main loop:    MSG msg;    while(TRUE)    {        DWORD starting_point = GetTickCount();        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))        {            if (msg.message == WM_QUIT)                break;            TranslateMessage(&msg);            DispatchMessage(&msg);        }        render_frame();        // check the 'escape' key        if(KEY_DOWN(VK_ESCAPE))            PostMessage(hWnd, WM_DESTROY, 0, 0);        while ((GetTickCount() - starting_point) < 25);    }    // clean up DirectX and COM    cleanD3D();    return msg.wParam;}// this is the main message handler for the programLRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){    switch(message)    {        case WM_DESTROY:            {                PostQuitMessage(0);                return 0;            } break;    }    return DefWindowProc (hWnd, message, wParam, lParam);}// this function initializes and prepares Direct3D for usevoid initD3D(HWND hWnd){    d3d = Direct3DCreate9(D3D_SDK_VERSION);    D3DPRESENT_PARAMETERS d3dpp;    ZeroMemory(&d3dpp, sizeof(d3dpp));    d3dpp.Windowed = FALSE;    d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    d3dpp.hDeviceWindow = hWnd;    d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;    d3dpp.BackBufferWidth = SCREEN_WIDTH;    d3dpp.BackBufferHeight = SCREEN_HEIGHT;    // create a device class using this information and the info from the d3dpp stuct    d3d->CreateDevice(D3DADAPTER_DEFAULT,                      D3DDEVTYPE_HAL,                      hWnd,                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,                      &d3dpp,                      &d3ddev);    D3DXCreateSprite(d3ddev, &d3dspt);    // create the Direct3D Sprite object	D3DXCreateTextureFromFileEx(d3ddev,    // the device pointer                                "C:\\Documents and Settings\\Owner\\My Documents\\MuffinFlavoreds Application\\intrepid2.jpg",    // the file name                                PICTURE_WIDTH,    // default width                                PICTURE_HEIGHT,    // default height                                D3DX_DEFAULT,    // no mip mapping                                NULL,    // regular usage                                D3DFMT_UNKNOWN,    // 32-bit pixels with alpha                                D3DPOOL_MANAGED,    // typical memory handling                                D3DX_DEFAULT,    // no filtering                                D3DX_DEFAULT,    // no mip filtering                                0,    // the hot-pink color key                                NULL,    // no image info struct                                NULL,    // not using 256 colors                                &sprite);    // load to sprite		HFONT hFont = CreateFont(32, // Our desired HEIGHT of the font0, // The WIDTH (If we leave this zero it will pick the best width depending on the height)0, // The angle of escapement0, // The angle of orientationFW_NORMAL, // The font's weight (We want it bold)FALSE, // Italic - We don't want italicFALSE, // Underline - We don't want it underlinedFALSE, // Strikeout - We don't want it strikethroughANSI_CHARSET, // This is the type of character setOUT_TT_PRECIS, // The Output PrecisionCLIP_DEFAULT_PRECIS, // The Clipping PrecisionANTIALIASED_QUALITY, // The quality of the font - We want anitaliased fontsFF_DONTCARE|DEFAULT_PITCH, // The family and pitch of the font. We don't care."Arial"); // The font name (Like "Arial", "Courier", etc...)	D3DXCreateFont(d3ddev, hFont, &dxfont);    return;}// this is the function used to render a single framevoid render_frame(void){    d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 0, 0), 0.0f, 0);    d3ddev->BeginScene();    // begins the 3D scene    d3dspt->Begin();    // begin sprite drawing	D3DXVECTOR2 translation;	translation.x = mousepos(1) - (PICTURE_WIDTH/2);	translation.y = mousepos(0) - (PICTURE_HEIGHT/2);	if (mousepos(0) <= PICTURE_HEIGHT/2) {		SetCursorPos(mousepos(1), PICTURE_HEIGHT/2);	}	if (mousepos(1) <= PICTURE_WIDTH/2) {		SetCursorPos(PICTURE_WIDTH/2, mousepos(0));	}	if (mousepos(1) >= (SCREEN_WIDTH-(PICTURE_WIDTH/2))) {		SetCursorPos((SCREEN_WIDTH-(PICTURE_WIDTH/2)), mousepos(0));	}	if (mousepos(0) >= (SCREEN_HEIGHT-(PICTURE_HEIGHT/2))) {		SetCursorPos(mousepos(1), (SCREEN_HEIGHT-(PICTURE_HEIGHT/2)));	}	d3dspt->Draw(sprite, NULL, NULL, NULL, NULL, &translation, 0xFFFFFFFF);	char buffer[256];	sprintf(buffer, "Intrepid Boat Follow Your Mouse And Not Go Over Boundaries by MuffinFlavored.\nThe mouse is at %d X and %d Y.", mousepos(1), mousepos(0));    static RECT textbox; 	SetRect(&textbox, 0, 0, 1280, 1024);     dxfont->DrawTextA(buffer,                      strlen(buffer),                      &textbox,                      DT_CENTER | DT_VCENTER,                      D3DCOLOR_ARGB(255, 255, 255, 255));    d3dspt->End();    // end sprite drawing    d3ddev->EndScene();    // ends the 3D scene    d3ddev->Present(NULL, NULL, NULL, NULL);    return;}// this is the function that cleans up Direct3D and COMvoid cleanD3D(void){    sprite->Release();    d3ddev->Release();    d3d->Release();    return;}