⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3ddlg.h

📁 经典游戏之源程序-飞行模拟器,方便学习和自我娱乐
💻 H
字号:
// 3dDlg.h
//
// Copyright (c) Nigel Thompson 1996
//
// This file defines all the dialog,
// property sheet and property page classes.
// It is automatically included when you include 3dPlus.h
//

#ifndef _3DDLG_H_
#define _3DDLG_H_

////////////////////////////////////////////////////////////////////////
// callback function prototypes

// Called when a modeless dialog closes so its creator will know
typedef void (CALLBACK * ONCLOSEDLGFN)(void* pArg);

// Called to request a pointer to a 3dFrame object to manipulate
typedef C3dFrame* (CALLBACK * GET3DFRAMEFN)(void *pArg);

// Called to request a pointer to a 3dShape object to manipulate
typedef C3dShape* (CALLBACK * GET3DSHAPEFN)(void *pArg);

///////////////////////////////////////////////////////////////////////////
// Shape creation property pages

class CShapePage : public CPropertyPage
{
	DECLARE_DYNCREATE(CShapePage)
public:
	CShapePage();
	CShapePage(UINT id);
	virtual C3dShape* CreateShape();

protected:
};

class CSpherePage : public CShapePage
{
	DECLARE_DYNCREATE(CSpherePage)

// Construction
public:
	CSpherePage();
	~CSpherePage();
	virtual C3dShape* CreateShape();

// Dialog Data
	//{{AFX_DATA(CSpherePage)
	enum { IDD = _3D_IDPP_SPHERE };
	double	m_dDia;
	double	m_dX;
	double	m_dY;
	double	m_dZ;
	double	m_dRad;
	//}}AFX_DATA
	int m_iDetail;


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CSpherePage)
	public:
	virtual BOOL OnSetActive();
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CSpherePage)
		// NOTE: the ClassWizard will add member functions here
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};

class CConePage : public CShapePage
{
	DECLARE_DYNCREATE(CConePage)

// Construction
public:
	CConePage();
	~CConePage();
	virtual C3dShape* CreateShape();

// Dialog Data
	//{{AFX_DATA(CConePage)
	enum { IDD = _3D_IDPP_CONE };
	BOOL	m_bBClosed;
	double	m_dBR;
	double	m_dBX;
	double	m_dBY;
	double	m_dBZ;
	BOOL	m_bTClosed;
	double	m_dTR;
	double	m_dTX;
	double	m_dTY;
	double	m_dTZ;
	//}}AFX_DATA


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CConePage)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CConePage)
		// NOTE: the ClassWizard will add member functions here
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};

class CCubePage : public CShapePage
{
	DECLARE_DYNCREATE(CCubePage)

// Construction
public:
	CCubePage();
	~CCubePage();
	virtual C3dShape* CreateShape();

// Dialog Data
	//{{AFX_DATA(CCubePage)
	enum { IDD = _3D_IDPP_CUBOID };
	double	m_dX;
	double	m_dY;
	double	m_dZ;
	double	m_dXL;
	double	m_dYL;
	double	m_dZL;
	double	m_dXD;
	double	m_dXU;
	double	m_dYD;
	double	m_dYU;
	double	m_dZD;
	double	m_dZU;
	//}}AFX_DATA


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CCubePage)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CCubePage)
		// NOTE: the ClassWizard will add member functions here
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};

class CObjectPage : public CShapePage
{
	DECLARE_DYNCREATE(CObjectPage)

// Construction
public:
	CObjectPage();
	~CObjectPage();
	virtual C3dShape* CreateShape();

// Dialog Data
	//{{AFX_DATA(CObjectPage)
	enum { IDD = _3D_IDPP_OBJECT };
	CString	m_strFilename;
	double	m_dX;
	double	m_dXD;
	double	m_dXU;
	double	m_dY;
	double	m_dYD;
	double	m_dYU;
	double	m_dZ;
	double	m_dZD;
	double	m_dZU;
	//}}AFX_DATA


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CObjectPage)
	public:
	virtual BOOL OnSetActive();
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CObjectPage)
	afx_msg void OnBrowse();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};

/////////////////////////////////////////////////////////////////////////////
// CAirPage dialog

class CAirPage : public CShapePage
{
	DECLARE_DYNCREATE(CAirPage)

// Construction
public:
	CAirPage();
	~CAirPage();
	virtual C3dShape* CreateShape();

	// Dialog Data
	//{{AFX_DATA(CAirPage)
	enum { IDD = _3D_IDPP_AIRPLANE };
	double	m_dX;
	double	m_dY;
	double	m_dZ;
	//}}AFX_DATA


// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CAirPage)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CAirPage)
		// NOTE: the ClassWizard will add member functions here
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};

/////////////////////////////////////////////////////////////////////////
// Insert Shape Dialog

class CShapeDlg : public CPropertySheet
{
	DECLARE_DYNAMIC(CShapeDlg)

// Construction
public:
	CShapeDlg(LPCTSTR pszCaption, CWnd* pParentWnd = NULL);

// Attributes
public:
	C3dShape* m_pShape;

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CShapeDlg)
	protected:
	virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CShapeDlg();

	// Generated message map functions
protected:
	
	CSpherePage m_SpherePage;
	CCubePage m_CubePage;
	CObjectPage m_ObjectPage;
	CConePage m_ConePage;
	CAirPage m_AirPage;

	void OnOK();

	//{{AFX_MSG(CShapeDlg)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////
// Transform property pages

class CTransformDlg;

class CTransformPage : public CPropertyPage
{
	DECLARE_DYNCREATE(CTransformPage)
public:
	CTransformPage();
	CTransformPage(UINT id);
	void AddTransform(C3dMatrix& m, D3DRMCOMBINETYPE ct);

	CTransformDlg* m_pTranDlg;
protected:
};



class CTranslatePage : public CTransformPage
{
	DECLARE_DYNCREATE(CTranslatePage)

// Construction
public:
	CTranslatePage();
	~CTranslatePage();

// Dialog Data
	//{{AFX_DATA(CTranslatePage)
	enum { IDD = _3D_IDPP_TRANSLATE };
	double	m_dX;
	double	m_dY;
	double	m_dZ;
	//}}AFX_DATA

// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CTranslatePage)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CTranslatePage)
	afx_msg void OnBefore();
	afx_msg void OnAfter();
	afx_msg void OnReplace();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};


class CRotatePage : public CTransformPage
{
	DECLARE_DYNCREATE(CRotatePage)

// Construction
public:
	CRotatePage();
	~CRotatePage();

// Dialog Data
	//{{AFX_DATA(CRotatePage)
	enum { IDD = _3D_IDPP_ROTATE };
	double	m_dX;
	double	m_dY;
	double	m_dZ;
	//}}AFX_DATA

// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CRotatePage)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CRotatePage)
	afx_msg void OnBefore();
	afx_msg void OnAfter();
	afx_msg void OnReplace();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};


class CScalePage : public CTransformPage
{
	DECLARE_DYNCREATE(CScalePage)

// Construction
public:
	CScalePage();
	~CScalePage();

// Dialog Data
	//{{AFX_DATA(CScalePage)
	enum { IDD = _3D_IDPP_SCALE };
	double	m_dX;
	double	m_dY;
	double	m_dZ;
	//}}AFX_DATA

// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CScalePage)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CScalePage)
	afx_msg void OnBefore();
	afx_msg void OnAfter();
	afx_msg void OnReplace();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

};

/////////////////////////////////////////////////////////////////////////
// Transform Dialog

class CTransformDlg : public CPropertySheet
{
	DECLARE_DYNAMIC(CTransformDlg)

// Construction
public:
	CTransformDlg(LPCTSTR pszCaption, 
				  ONCLOSEDLGFN pOnCloseFn,
				  GET3DFRAMEFN pGet3dFrameFn,
				  void *pArg);
	C3dFrame* GetFrame()
		{ASSERT(m_pGet3dFrameFn); return m_pGet3dFrameFn(m_pArg);}

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CTransformDlg)
	protected:
	virtual void PostNcDestroy();
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CTransformDlg();

	// Generated message map functions
protected:
	ONCLOSEDLGFN m_pOnCloseFn;
	GET3DFRAMEFN m_pGet3dFrameFn;
	void* m_pArg;
	CTranslatePage m_TranPage;
	CRotatePage m_RotPage;
	CScalePage m_ScalePage;




	//{{AFX_MSG(CTransformDlg)
	afx_msg void OnClose();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////
// CAxesPage dialog

class CJoyValCtl;

typedef struct _AXPGROW {
  CComboBox* pcbIn;
  CJoyValCtl* pjvIn;
  CComboBox* pcbBtn;
  int* piDead;
  double* pdScale;
  CJoyValCtl* pjvOut;
} AXPGROW;

class CAxesPage : public CPropertyPage
{
	DECLARE_DYNCREATE(CAxesPage)

// Construction
public:
	CAxesPage();
	~CAxesPage();

// Dialog Data
	//{{AFX_DATA(CAxesPage)
	enum { IDD = _3D_IDPP_JOYAXIS };
	CComboBox	m_cbZin;
	CComboBox	m_cbYin;
	CComboBox	m_cbXin;
	CComboBox	m_cbVin;
	CComboBox	m_cbUin;
	CComboBox	m_cbRin;
	CComboBox	m_cbZbtn;
	CComboBox	m_cbYbtn;
	CComboBox	m_cbXbtn;
	CComboBox	m_cbVbtn;
	CComboBox	m_cbUbtn;
	CComboBox	m_cbRbtn;
	int		m_iRdead;
	int		m_iUdead;
	int		m_iVdead;
	int		m_iXdead;
	int		m_iYdead;
	int		m_iZdead;
	double	m_dRscale;
	double	m_dUscale;
	double	m_dVscale;
	double	m_dXscale;
	double	m_dYscale;
	double	m_dZscale;
	//}}AFX_DATA
	C3dJoyInDev* m_pDev;
	UINT m_uiTimer;
	AXPGROW m_row[6];

// Overrides
	// ClassWizard generate virtual function overrides
	//{{AFX_VIRTUAL(CAxesPage)
	public:
	virtual BOOL OnSetActive();
	virtual BOOL OnApply();
	virtual BOOL OnKillActive();
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	// Generated message map functions
	//{{AFX_MSG(CAxesPage)
	afx_msg void OnTimer(UINT nIDEvent);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

	void SetInList(CComboBox* pcb);
	void SetBtnList(CComboBox* pcb);
	void ShowState();
};

/////////////////////////////////////////////////////////////////////////////
// CJoyValCtl window

class CJoyValCtl : public CWnd
{
// Construction
public:
	CJoyValCtl();

// Attributes
public:

// Operations
public:
    static BOOL Register();
	void SetRange(int iMin, int iMax);
	void SetDeadBand(int iMin, int iMax);
	void SetValue(int iVal);

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CJoyValCtl)
	//}}AFX_VIRTUAL

// Implementation
public:
	virtual ~CJoyValCtl();

	// Generated message map functions
protected:
	//{{AFX_MSG(CJoyValCtl)
	afx_msg void OnNcDestroy();
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnPaint();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()

    static BOOL m_bRegistered;
	CRect m_rcWnd;
	int m_iMin;
	int m_iMax;
	int m_iDeadMin;
	int m_iDeadMax;
	int m_iVal;

	static LRESULT CALLBACK JoyValWndProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam);
};


#endif // _3DDLG_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -