JunkBox_Win_Lib 1.5.3
Loading...
Searching...
No Matches
DxBaseClass.h
Go to the documentation of this file.
1#pragma once
2
3#include "ExClass.h"
4#include "Dx9.h"
5
6#include <mmsystem.h>
7
8
9//
10namespace jbxwl {
11
12
13/*
14CDxBaseView クラス
15
16 CExView クラスを継承.
17 DirectX を使用した,データを表示するための基本テンプレートクラス.
18 2D表示を行う場合は,このクラスを継承するとよい.
19 一方,3D表示を行う場合は,CDxVTXBaseView クラスを継承するとよい.
20 通常,CExDocument から cmnHeadをもらって,データの表示を行う.(推奨動作)
21
22 制御用変数
23 BOOL hasViewData; // 表示可能な用データを持っているか?
24 // hasViewData==TRUE でなければ,データは表示されない.
25
26 このクラスを継承するクラスは,少なくとも以下の関数をオーバーライドする必要がある.
27 void OnInitialUpdate(); // クラスの初期化
28 void ExecRender(); // 表示ルーチン
29 void InitObject(void); // デバイスリセット時のリソース再獲得関数
30
31 また,必要なら以下の関数もオーバーライドする.
32 void SetParameter(D3DPRESENT_PARAMETERS*, int, int); // デバイスのパラメータを設定する.
33
34 Direct Input のマウスの初期化機能.OnActivateView()
35
36 以下 CExViewクラスから継承した機能
37 ウィンドウサイズのジャストフィット機能あり.v(^^
38 ウィンドウのリサイズ制御機能あり.bool cnstSize, cnstXSize, cnstYSize, cnstXYRate;
39 タイマ割り込み機能あり.TimerStart() でタイマを始動させる.
40 マウス制御機能(簡易版)あり. GetMousePos() (クライアント領域でのマウスの座標)
41
42 垂直スクロールテンプレート機能 ('04 8/28)
43 垂直スクロールバーを使用する場合は,vSBmaxを設定し,SetScrollRange(SB_VERT, 0, vSBmax);
44 を呼ぶ.スクロールバーの位置は vSBposに設定される.
45 スクロールバーを動かした場合は,SetNewSurface(int ovsbpos)をオーバーライドし,サーフェイス
46 を更新する.ovsbposはスクロールバーの以前の位置.
47*/
48
49
51
91class CDxBaseView;
92
93
95
117HRESULT ResetDx9Device(LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*, CDxBaseView* pviw=NULL);
118
119
120
122// DirectX Viewクラス(基本形)
123//
124class CDxBaseView : public CExView
125{
126public:
127 LPDIRECT3D9 lpD3D; // Dx9 リリース禁止
128 LPDIRECT3DDEVICE9 lpD3DDevice; // Dx9 3Dデバイスインターフェイス
129 LPDIRECT3DSURFACE9 lpBackBuffer; // バックバッファ
130 LPDIRECT3DSURFACE9 lpSurface; // サーフェース
131 LPDIRECT3DTEXTURE9 lpTexture; // テクスチャ
132 D3DPRESENT_PARAMETERS d3dParam; // 3Dデバイスパラメータ
133
134 LPDIRECTINPUT8 lpDInput; // Dx Input リリース禁止
135 LPDIRECTINPUTDEVICE8 lpDMouse; // マウスのインターフェイス リリース禁止
136 LPDIRECTINPUTDEVICE8 lpDKeyBoard; // キーボードのインターフェイス リリース禁止
137
139
140public:
141 CDxBaseView();
142 virtual ~CDxBaseView();
143
144protected:
145 virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);
146
147public:
148 virtual void OnInitialUpdate(void) {} // 初期化
149 virtual void SetState(void) {} // 環境設定
150 virtual void ExecRender(void) {} // 描画
151 virtual void ClearObject(void); // デバイスリセット時のリソース開放関数
152 virtual void InitObject(void) { SetState();} // デバイスリセット時のリソース再獲得関数
153 virtual void SetParameter(D3DPRESENT_PARAMETERS* d3dParam, int xsize, int ysize); // デバイスのパラメータを設定する.
154
155 POINT GetWindowDisplaySize(POINT pt); // ウィンドウが画面に収まるように大きさを再計算する
156 BOOL InitDevice(int xsize=0, int ysize=0, CWnd* cwnd=NULL); // DirectX9のデバイスを作る
157
158 virtual int GetMouseButton();
160};
161
162
163
165// DirectX Vertex View クラス
166//
167
169{
170public:
171 LPDIRECT3DVERTEXBUFFER9 vb, lb; // 頂点バッファへのポインタ
172
177
178 double rTime, gTime, lTime, startTime; // lTime: スピード調節用
179 double angle, angleX, angleY, angleZ; // 回転角
180 double mWheelAc;
184
185public:
187 virtual ~CDxVTXBaseView();
188
189protected:
190 virtual void OnDraw(CDC* pDC);
191
192public:
193 virtual void OnInitialUpdate(void) {} // 初期化
194 virtual void SetState(void) {} // 環境設定
195 virtual void ExecRender(void) {} // 描画
196 virtual void InitObject(void) {SetState();} // デバイスリセット時のリソース再獲得関数
197
198 virtual BOOL PrepareVB(void) {return TRUE;} // 頂点バッファのセット
199 virtual void ReleaseVB(void) {DXRELEASE(vb); DXRELEASE(lb);} // 頂点バッファの開放
200
201 virtual void SwitchRotation(void); // 回転モードの切り替え
202 virtual void ExecRotation(void); // 回転処理 ExRotation()を使用して回転方向を決める.
203
204 virtual void ExMouseWheel(void) {} // マウスホイールによる操作の切り替え
205 virtual void ExRotationAngle(void) {} // 回転方向の入れ替え
206
209};
210
211
212} // namespace
#define DXRELEASE(d)
Definition Dx9.h:39
LPDIRECTINPUT8 lpDInput
virtual void OnActivateView(BOOL bActivate, CView *pActivateView, CView *pDeactiveView)
virtual void OnInitialUpdate(void)
LPDIRECT3DDEVICE9 lpD3DDevice
LPDIRECTINPUTDEVICE8 lpDKeyBoard
LPDIRECTINPUTDEVICE8 lpDMouse
D3DPRESENT_PARAMETERS d3dParam
virtual int GetMouseButton()
LPDIRECT3DSURFACE9 lpBackBuffer
LPDIRECT3D9 lpD3D
virtual void SetParameter(D3DPRESENT_PARAMETERS *d3dParam, int xsize, int ysize)
BOOL InitDevice(int xsize=0, int ysize=0, CWnd *cwnd=NULL)
virtual void SetState(void)
POINT GetWindowDisplaySize(POINT pt)
virtual void ClearObject(void)
virtual void InitObject(void)
virtual void ExecRender(void)
LPDIRECT3DSURFACE9 lpSurface
LPDIRECT3DTEXTURE9 lpTexture
virtual void OnDraw(CDC *pDC)
virtual void ReleaseVB(void)
virtual BOOL PrepareVB(void)
virtual void OnInitialUpdate(void)
LPDIRECT3DVERTEXBUFFER9 lb
LPDIRECT3DVERTEXBUFFER9 vb
virtual void ExecRotation(void)
afx_msg void OnTimer(UINT_PTR nIDEvent)
virtual void SetState(void)
virtual void SwitchRotation(void)
virtual void InitObject(void)
virtual void ExecRender(void)
virtual void ExRotationAngle(void)
virtual void ExMouseWheel(void)
HRESULT ResetDx9Device(LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS *, CDxBaseView *pviw=NULL)