• Content count

  • Joined

  • Last visited

Community Reputation

141 Excellent

About Smarkus

  • Rank

Personal Information

  • Location
  • Interests

Recent Profile Visitors

319 profile views
  1. Oh awesome! It works now, thank you so much!
  2. Not sure if this is the problem, the book has the same code for device as mine. Is there anything that could possibly be wrong?
  3. //page 120 #include <Windows.h> #include <windef.h> #include <winuser.h> #include <d3d9.h> #include <d3dx9.h> #include <stdio.h> #include <stdlib.h> #include <time.h> //#pragma comment (lib,"d3d9.lib") //library's link //#pragma comment (lib,"d3dx9.lib") //#pragma comment (lib,"dxguid.lib") //#pragma comment (lib,"winmm.lib") //システム時刻取得に必要 | マルチメディアライブラリ(Windows Multimedia Library) //#pragma comment (lib,"dinput8.lib") #define APPTITLE "CreateSurface" #define KEY_DOWN(vk_code)((GetAsyncKeyState(vk_code)&0x8000)?1:0) #define KEY_UP(vk_code)((GetAsyncKeyState(vk_code)&0x8000)?1:0) #define SCREEN_WIDTH 640 #define SCREEN_HEIGHT 480 //function prototypes LRESULT WINAPI WinProc(HWND, UINT, WPARAM, LPARAM); ATOM MyRegisterClass(HINSTANCE); int GameInit(HWND); void GameRun(HWND); void GameEnd(HWND); //Direct3D Objects LPDIRECT3D9 d3d = NULL; LPDIRECT3DDEVICE9 d3ddev = NULL; LPDIRECT3DSURFACE9 surface = NULL; LPDIRECT3DSURFACE9 backbuffer = NULL; LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_QUIT: GameEnd(hWnd); PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); } //helper function to set up windows properties ATOM MyRegisterClass(HINSTANCE hInstance) { // create struucture WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); //fill the structure with information = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)WinProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = NULL; wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = APPTITLE; wc.hIconSm = NULL; //set up the window with the class info return RegisterClassEx(&wc); } //Entry point for a windows program int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; MyRegisterClass(hInstance); HWND hWnd; hWnd = CreateWindow( APPTITLE, APPTITLE, WS_EX_TOPMOST | WS_VISIBLE | WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT, SCREEN_WIDTH, SCREEN_HEIGHT, NULL, NULL, hInstance, NULL ); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); if (!GameInit(hWnd)) { return 0; } //Main Message loop int done = 0; while (!done) { if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { if (msg.message == WM_QUIT) { done = 1; } TranslateMessage(&msg); DispatchMessage(&msg); } else { GameRun(hWnd); } } return msg.wParam; } int GameInit(HWND hwnd) { HRESULT result; //initialize Direct3D d3d = Direct3DCreate9(D3D_SDK_VERSION); if (d3d == NULL) { MessageBox(hwnd, "Error initializing Direct3D", "Error", MB_OK); return 0; } //set Direct3D presentation parameters D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof(d3dpp)); d3dpp.Windowed = TRUE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; d3dpp.BackBufferCount = 1; d3dpp.BackBufferWidth = SCREEN_WIDTH; d3dpp.BackBufferHeight = SCREEN_HEIGHT; d3dpp.hDeviceWindow = hwnd; //create Direct3D device d3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &d3ddev); if (d3ddev = NULL) { MessageBox(hwnd, "Error creating Direct3D device", "Error", MB_OK); return 0; } //set random number seed srand(time(NULL)); //Clear the backbuffer to black d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); //Create pointer to back buffer d3ddev->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer); //create surface result = d3ddev->CreateOffscreenPlainSurface( 100, 100, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, &surface, NULL); if (result!=D3D_OK) { return 1; } //load surface from file result = D3DXLoadSurfaceFromFile( surface, NULL, NULL, "char.jpg", NULL, D3DX_DEFAULT, 0, NULL); //make sure file was loaded fine if (result != D3D_OK) { return 1; } //draw surface to back buffer d3ddev->StretchRect(surface, NULL, backbuffer, NULL, D3DTEXF_NONE); //return okay return 1; } void GameRun(HWND hwnd) { RECT rect; int r, g, b; if (d3ddev == NULL) { return; } if (d3ddev->BeginScene()) { //Create pointer to the back buffer d3ddev->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer); //draw surface to the back buffer d3ddev->StretchRect(surface, NULL, backbuffer, NULL, D3DTEXF_NONE); //stop rendering d3ddev->EndScene(); } d3ddev->Present(NULL, NULL, NULL, NULL); //check for escape key to exit program if (KEY_DOWN(VK_ESCAPE)) { PostMessage(hwnd, WM_DESTROY, 0, 0); } } void GameEnd(HWND hwnd) { //free the surface surface->Release(); if (d3ddev != NULL) { d3ddev->Release(); } if (d3d != NULL) { d3d->Release(); } } So this is the code. I'm following a book and I checked If I made any mistakes. The picture shows what the error is. Can someone help? Also, what is the default location for a file/bitmap/jpg in my case?