1 Replies - 418 Views - Last Post: 06 January 2013 - 05:31 AM Rate Topic: -----

#1 JiiKoo  Icon User is offline

  • New D.I.C Head

Reputation: 0
  • View blog
  • Posts: 1
  • Joined: 06-January 13

Beginning Dx10 game dev error

Posted 06 January 2013 - 04:37 AM

Hello all!

I'am reading this book called beginning dx10 game dev by Wendy Jones.

I get error when I'am trying to Initialize Direct3D in winmain (line 40).
'winmain.cpp(40): error C2065: 'hWnd' : undeclared identifier'

Im not sure what Iam doing wrong and this is day2 Iam trying to figure this out =)

Thank you in advance!!

#include <Windows.h>
#include <tchar.h>
#include <D3D10.h>
#include <D3DX10.h>

#define Error(X) MessageBox(NULL, X, "Error", MB_OK)

// Direct3D global variables
ID3D10Device*			pD3DDevice		  = NULL;
IDXGISwapChain*			pSwapChain		  = NULL;
ID3D10RenderTargetView* pRenderTargetView = NULL;

HINSTANCE hInst;						// Global handle to hold the app instance
HWND	  wndHandle;					// Global variable to hold the window handle

int width  = 640;
int height = 480;

// Forward declarations
bool InitWindow			 ( HINSTANCE hInstance, int width, int height );
LRESULT CALLBACK WndProc ( HWND, UINT, WPARAM, LPARAM );
bool InitWindow			 ( void );
bool InitDirect3D		 ( void );
void Render				 ( void );
void ShutdownDirect3D	 ( void );



// This is winmain, the main entry point for windows applications
int APIENTRY _tWinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance,
						 LPTSTR lpCmdLine, int nCmdShow )
{
	// Initialize the window
	if ( !InitWindow ( hInstance, width, height ))
	{
		return false;
	}

	// Called after creating the window
	if ( !InitDirect3D ( hWnd, width, height ) )
	{
		return 0;
	} 

	// Main message loop:
	MSG msg = {0};
	while (WM_QUIT != msg.message)
	{
		while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) == TRUE)
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
	
		}
			// Call the render function
			Render();
		}
			return (int)msg.wParam;
	}




/*************************************************
InitWindow
Inits and creates main app window
Inputs - application instance -HINSTANCE
	Window width  - int
	Window height - int
Ouput - true if succesful, false if failed - bool
***************************************************/
bool InitWindow ( HINSTANCE hInstance, int width, int height )
{
	WNDCLASSEX wcex;

	// Fill in the WNDCLASSEX structure. This describes how the window
	// may look to the system
	wcex.cbSize			= sizeof(WNDCLASSEX);			// The size of the structure
	wcex.style			= CS_HREDRAW | CS_VREDRAW;		// the class style
	wcex.lpfnWndProc	= (WNDPROC)WndProc;				// the window procedure callback
	wcex.cbClsExtra		= 0;							// extra bytes to allocate for this class
	wcex.cbWndExtra		= 0;							// extra bytes to allocate for this instance
	wcex.hInstance		= hInstance;					// handle to the application instance
	wcex.hIcon			= 0;							// icon to associate with the application
	wcex.hCursor		= LoadCursor(NULL, IDC_ARROW);	// the default cursor to use
	wcex.hbrBackground	= (HBRUSH)(COLOR_WINDOW+1);		// the background color
	wcex.lpszMenuName	= NULL;							// the resource name for the menu
	wcex.lpszClassName  = TEXT("DirectXExample");		// theclassnamebeingcreated
	wcex.hIconSm		= 0;							// the handle to the small icon
	
	RegisterClassEx(&wcex);

	// Resize the window
	RECT rect = { 0, 0, width, height };
	AdjustWindowRect ( &rect, WS_OVERLAPPEDWINDOW, FALSE );

	// Create the window from the class above
	wndHandle = CreateWindow (	TEXT("DirectXExample"),
								TEXT("DirectXExample"),
								WS_OVERLAPPEDWINDOW,
								CW_USEDEFAULT,
								CW_USEDEFAULT,
								rect.right - rect.left,
								rect.bottom - rect.top,
								NULL,
								NULL,
								hInstance,
								NULL );
	if ( !wndHandle )
	{
		return false;
	}

	// Display the window on the screen
	ShowWindow   ( wndHandle, SW_SHOW );
	UpdateWindow ( wndHandle );

	return true;

}




/*********************************************************
WndProc
The main window procedure for the application
Inputs - application window handle - HWND
			message sent to the window -		UINT
			wParam of the message being sent -	WPARAM
			lParam of the message being sent -	LPARAM
Ouputs - LRESULT
**********************************************************/
LRESULT CALLBACK WndProc ( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
	// Check any available messages from the queue
	switch ( message )
	{
		// Allow the user to press the Esc key to end the application
		case WM_KEYDOWN:
			switch ( wParam )
			{
				// Check if the user hit the Esc key
				case VK_ESCAPE:
					Error("Exiting..");
					PostQuitMessage(0);
					break;
			}
		
		break;

		// The user hit the close button, close the app
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
	}

	// Allways return the message to the default window procedure for further processing
	return DefWindowProc ( hWnd, message, wParam, lParam );
}





/******************************************************
InitDirect3D
Initializes Direct3D
Inputs - Parent window handle - HWND,
		 Window width		  - int,
		 Window height		  - int
Outputs - true if successful, false if failed - bool
******************************************************/
bool InitDirect3D ( HWND hWnd, int width, int height )
{

	// Create the clear DXGI_SWAP_CHAIN_DESC structure
	DXGI_SWAP_CHAIN_DESC swapChainDesc;

	ZeroMemory ( &swapChainDesc, sizeof ( swapChainDesc ) );

	// Fill in the needed values
	swapChainDesc.BufferCount			= 1;
	swapChainDesc.BufferDesc.Width		= width;
	swapChainDesc.BufferDesc.Height		= height;
	swapChainDesc.BufferDesc.Format		= DXGI_FORMAT_R8G8B8A8_UNORM;
	swapChainDesc.BufferDesc.RefreshRate.Numerator   = 60;
	swapChainDesc.BufferDesc.RefreshRate.Denominator = 1;
	swapChainDesc.BufferUsage			= DXGI_USAGE_RENDER_TARGET_OUTPUT;
	swapChainDesc.OutputWindow			= hWnd;
	swapChainDesc.SampleDesc.Count		= 1;
	swapChainDesc.SampleDesc.Quality	= 0;
	swapChainDesc.Windowed				= TRUE;

	// Create the D3D device and the swap chain
	HRESULT hr = D3D10CreateDeviceAndSwapChain
				 ( NULL,
				   D3D10_DRIVER_TYPE_REFERENCE,
				   NULL,
				   0,
				   D3D10_SDK_VERSION,
				   &swapChainDesc,
				   &pSwapChain,
				   &pD3DDevice );

	// Error checking. Make sure the device was created
	if ( hr != S_OK )
	{
		return false;
	}

	// Get the back buffer from the swapchain
	ID3D10Texture2D *pBackBuffer;
	hr = pSwapChain->GetBuffer ( 0, __uuidof ( ID3D10Texture2D ) , ( LPVOID* ) &pBackBuffer );
	if ( hr != S_OK )
	{
		return false;
	}

	// Create the render target view
	hr = pD3DDevice->CreateRenderTargetView ( pBackBuffer, NULL, &pRenderTargetView );

	// Release the back buffer
	pBackBuffer->Release();

	// Make sure the render target view was created successfully
	if ( hr != S_OK)
	{
		return false;
	}


	// Set the render target
	pD3DDevice->OMSetRenderTargets ( 1, &pRenderTargetView, NULL );


	// Create and set the viewport
	D3D10_VIEWPORT viewPort;

	viewPort.Width		= width;
	viewPort.Height		= height;
	viewPort.MinDepth	= 0.0f;
	viewPort.MaxDepth	= 1.0f;
	viewPort.TopLeftX	= 0;
	viewPort.TopLeftY	= 0;
	
	pD3DDevice->RSSetViewports ( 1, &viewPort );

	return true;
}



/*******************************************
Render
All drawing happens in the Render function
Inputs  - void
Outputs - void
*******************************************/
void Render()
{
	if ( pD3DDevice != NULL )
	{
		// Clear the target buffer
		pD3DDevice->ClearRenderTargetView ( pRenderTargetView, 
											D3DXCOLOR ( 0.0f, 0.0f, 0.0f, 0.0f ));

		// All drawing will go here

		// Display the next item in the swap chain
		pSwapChain->Present ( 0, 0 );
	}
}



/******************************************************
ShutdownDirect3D
Closes down and releases the resources for Direct3D
Inputs  - void
Outpus  - void
*******************************************************/
void ShutdownDirect3D()
{
	// Release the rendertarget
	if ( pRenderTargetView )
	{
		pRenderTargetView->Release();
	}

	// Release the swapchain
	if ( pSwapChain )
	{
		pSwapChain->Release();
	}

	// Release the D3D Device
	if ( pD3DDevice )
	{
		pD3DDevice->Release();
	}
}


Is This A Good Question/Topic? 0
  • +

Replies To: Beginning Dx10 game dev error

#2 stayscrisp  Icon User is offline

  • フカユ
  • member icon

Reputation: 1009
  • View blog
  • Posts: 4,199
  • Joined: 14-February 08

Re: Beginning Dx10 game dev error

Posted 06 January 2013 - 05:31 AM

Hey, this book may be a little ahead of you at the moment. This is the kind of error you should have no problem with a long time before you attempt graphics programming like this. I am only telling you this as you are just going to keep running into problems you cannot solve. Go back and learn some more basics first.

But if you are set on continuing, here is your error

Here the window handle is declared as wndHandle:
HWND  wndHandle;   // Global variable to hold the window handle



And here you are using it as hWnd:
if ( !InitDirect3D ( hWnd, width, height ) )


Was This Post Helpful? 2
  • +
  • -

Page 1 of 1