Click here to Skip to main content
Click here to Skip to main content
 
Add your own
alternative version

MFC D3D Application: Direct3D Tutorial: Part I

, 9 Dec 2012 CPOL
Yet another Direct3D framework, this time for MFC apps, with a step by step tutorial
#if !defined(AFX_D3DWND_H__C3D69D36_A0AD_47A5_8382_97AFF80430E3__INCLUDED_)
#define AFX_D3DWND_H__C3D69D36_A0AD_47A5_8382_97AFF80430E3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// D3DWnd.h : header file
//

#include "XD3D.h"

// set up a set of axis vertices
static const D3DXVECTOR3 SAXES[] =
{
	D3DXVECTOR3(0.0f, 0.0f, 0.0f),
	          SAXES[0] + D3DXVECTOR3(1.0f, 0.0f, 0.0f),
	SAXES[0], SAXES[0] + D3DXVECTOR3(0.0f, 1.0f, 0.0f),
	SAXES[0], SAXES[0] + D3DXVECTOR3(0.0f, 0.0f, 1.0f),
	
	// x widget
	SAXES[1], SAXES[1] + D3DXVECTOR3(-0.1f, -0.1f, 0.0f),
	SAXES[1], SAXES[1] + D3DXVECTOR3(-0.1f, +0.1f, 0.0f),
	
	// y widget
	SAXES[3], SAXES[3] + D3DXVECTOR3(+0.1f, +0.1f, 0.0f),
	SAXES[3], SAXES[3] + D3DXVECTOR3(-0.1f, +0.1f, 0.0f),

	// z widget
	SAXES[5], SAXES[5] + D3DXVECTOR3(-0.1f, 0.0f, 0.0f),
	SAXES[5], SAXES[5] + D3DXVECTOR3(+0.1f, 0.0f, 0.0f),
};

static const int SAXES_VERTS = sizeof(SAXES) / sizeof(SAXES[0]);
static const int SAXES_LINES = SAXES_VERTS / 2;


/////////////////////////////////////////////////////////////////////////////
// CD3DWnd window

class CD3DWnd : public CWnd, public CXD3D
{
// Construction
public:
	CD3DWnd();

// Attributes
protected:
	// matrices
    D3DXMATRIX m_matWorld;
    D3DXMATRIX m_matView;
    D3DXMATRIX m_matProj;

	// view specification
    D3DXVECTOR3 m_vEye;
    D3DXVECTOR3 m_vDir;
    D3DXVECTOR3 m_vUp;

	// lights
	D3DLIGHT9 m_Light;
	
	// axes material and vertex buffer
	D3DMATERIAL9			m_AxesMaterial;
	LPDIRECT3DVERTEXBUFFER9 m_pVBAxes;

	// ambient color
	D3DCOLOR m_dwAmbientColor;

	// mouse input utility
	CD3DArcBall m_ArcBall;

public:

// Operations
public:
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CD3DWnd)
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CD3DWnd();

	// D3D Initializer
	HRESULT Initialize();

	// D3D overrides
	HRESULT InitDeviceObjects();
    HRESULT RestoreDeviceObjects();
    HRESULT FrameMove();
	HRESULT Render();    
    HRESULT InvalidateDeviceObjects();
	HRESULT DeleteDeviceObjects();

	// mouse input handler
	LRESULT HandleMouseMessages(UINT message, WPARAM wParam, LPARAM lParam);

	// Generated message map functions
protected:
	//{{AFX_MSG(CD3DWnd)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_D3DWND_H__C3D69D36_A0AD_47A5_8382_97AFF80430E3__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

hector [.j.] rivas
Software Developer (Senior) CompuCom, Inc.
United States United States
Hector J. Rivas has 25+ years of experience managing hardware and software development under many different operating systems, platforms and languages. He has developed microcontroller interfaces and PC games; authored computer based training lessons and delivered fully functional financial and administrative data-intensive applications, as well as image processing and other calculation-intensive applications. Mr. Rivas has also managed Y2K remediation, large scale platform migration and Web site projects, from R&D to actual deployment.
Follow on   LinkedIn

| Advertise | Privacy | Mobile
Web01 | 2.8.141015.1 | Last Updated 9 Dec 2012
Article Copyright 2006 by hector [.j.] rivas
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid