OSDN Git Service

#xxxxx DTXViewerのプロジェクトを追加。
[dtxmania/dtxmania.git] / DTXViewerプロジェクト / @FDK10プロジェクト / CD3DApplication.h
diff --git a/DTXViewerプロジェクト/@FDK10プロジェクト/CD3DApplication.h b/DTXViewerプロジェクト/@FDK10プロジェクト/CD3DApplication.h
new file mode 100644 (file)
index 0000000..96901d7
--- /dev/null
@@ -0,0 +1,78 @@
+#pragma once
+
+#include "CD3DDisplay.h"
+#include "CTimer.h"
+
+namespace FDK {
+       namespace AppBase {
+
+class CD3DApplication
+{
+public:
+       CD3DApplication();
+
+       // \8bN\93®
+       virtual HRESULT Create( HINSTANCE hInst, LPCTSTR strCmdLine );          // \8f\89\8aú\89»
+       virtual LRESULT WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );  // \83E\83B\83\93\83h\83E\83\81\83b\83Z\81[\83W\83n\83\93\83h\83\89\81B
+       INT             Run();                                                                                                          // \83X\83\8c\83b\83h\83\8b\81[\83v
+
+       // Create() \82ð\8cÄ\82Ñ\8fo\82·\91O\82É\88È\89º\82Ì\83\81\83\93\83o\95Ï\90\94\82ð\90Ý\92è\89Â\94\\81B
+       static HWND hWnd;                                                               // \83E\83B\83\93\83h\83E\83n\83\93\83h\83\8b\81iNULL\82È\82ç\83f\83t\83H\83\8b\83g\83E\83B\83\93\83h\83E\82ª\8dì\90¬\82³\82ê\82é\81j
+       static int      nBpp;                                                           // \83r\83b\83g\90[\93x\81i16 or 32\81j
+       bool            b\91S\89æ\96Ê\83\82\81[\83h;                                          // \91S\89æ\96Ê\83\82\81[\83h\82È\82ç true
+       int                     nWidth, nHeight;                                        // \83E\83B\83\93\83h\83E\83T\83C\83Y\81A\90[\93x
+       bool            b\90\82\92¼\8bA\90ü\93¯\8aú;                                          // \83t\83\8a\83b\83v\82ð\90\82\92¼\8bA\90ü\93¯\8aú\82³\82¹\82é\82È\82çtrue
+       DWORD           dw\95`\89æ\8aÔ\8au;                                                     // Present \8e\9e\82Ì\83X\83\8a\81[\83v\90\94[ms]\81i\83f\83t\83H\83\8b\83g 3 ms\81G\94C\88Ó\82Ì\83^\83C\83~\83\93\83O\82Å\95Ï\8dX\89Â\94\\81j
+    LPCTSTR            strWindowTitle;                                         // \83A\83v\83\8a\83E\83B\83\93\83h\83E\82Ì\83^\83C\83g\83\8b\96¼
+    LPCTSTR            strWindowClass;                                         // \83A\83v\83\8a\83E\83B\83\93\83h\83E\82Ì\83N\83\89\83X\96¼
+
+       // \82»\82Ì\91¼
+       static LPDIRECTDRAW7                    pDD;                            // DirectDraw7
+       static LPDIRECTDRAWSURFACE7             pddsFrontBuffer;        // \83t\83\8d\83\93\83g\83o\83b\83t\83@
+       static LPDIRECTDRAWSURFACE7             pddsBackBuffer;         // \83o\83b\83N\83o\83b\83t\83@
+       static LPDIRECT3D7                              pD3D;                           // Direct3D7
+       static LPDIRECT3DDEVICE7                pD3DDevice;                     // Direct3DDevice7
+       static CD3DDisplay                              D3DDisplay;                     // \83A\83_\83v\83^,\83f\83o\83C\83X,\83\82\81[\83h\8aÇ\97\9d
+       HINSTANCE                                               hInstance;                      // \83C\83\93\83X\83^\83\93\83X
+       bool                                                    bReady;                         // \95`\89æ\8f\80\94õ\82ª\90®\82Á\82½\82ç true
+       bool                                                    bActive;                        // \83E\83B\83\93\83h\83E\82ª\83A\83N\83e\83B\83u\82È\82ç true\81A\8dÅ\8f¬\89»or\91S\95\94\89B\82ê\82Ä\82¢\82é\8fê\8d\87\82Í false
+       CTimer                                                  timer;                          // Flip|Blt\97p\83^\83C\83}
+       int                                                             nFPS;                           // Frame / sec,
+
+       static void     GetProjectionParam( float* d, float* t, float* a ) { *d=100.0f; *t=24.0f/180.0f*(float)PI; *a=1.0f; }
+
+protected:
+       HRESULT t3D\8aÂ\8b«\82Ì\8d\\92z();                                        // \82R\82c\8aÂ\8b«\82Ì\8d\\92z\81iCreate(), ForceWindowed()\82©\82ç\8cÄ\82Ñ\8fo\82³\82ê\82é\81j
+       HRESULT t3D\8aÂ\8b«\82Ì\95`\89æ();                                        // \82R\82c\82Ì\95`\89æ\8f\88\97\9d
+       void    t3D\8aÂ\8b«\82Ì\94j\8aü();                                        // \82R\82c\8aÂ\8b«\82Ì\94j\8aü
+       HRESULT t3D\8aÂ\8b«\82Ì\8dÄ\8d\\92z( bool b\90V\91S\89æ\96Ê\83\82\81[\83h );        // \83X\83\8c\83b\83h\8bì\93®\82Ì\8fê\8d\87\82Í\81A\82±\82±\82É\97\88\82é\82Ü\82Å\82É\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\82Å\83X\83\8c\83b\83h\93®\8dì\82ð\8e~\82ß\82Ä\82¨\82­\82±\82Æ\81B
+
+       virtual HRESULT OneTimeSceneInit()                              { return S_OK; }        // \8dÅ\8f\89\82P\89ñ\82¾\82¯\82Ì\8f\89\8aú\89»\81i\83E\83B\83\93\83h\83E\81ADD/D3D\8f\89\8aú\89»\8cã\81j
+       virtual HRESULT InitDeviceObjects()                             { return S_OK; }        // \83f\83o\83C\83X\88Ë\91\83I\83u\83W\83F\83N\83g\82Ì\93à\95\94\8fó\91Ô\8f\89\8aú\89»
+       virtual HRESULT RestoreDeviceObjects()                  { return S_OK; }        // \81@\81@\81@\81@\81@\81@\81V\81@\81@\81@\81@\81@\81@\83T\81[\83t\83F\83C\83X\8d\\92z
+       virtual HRESULT InvalidateDeviceObjects()               { return S_OK; }        // \81@\81@\81@\81@\81@\81@\81V\81@\81@\81@\81@\81@\81@\83T\81[\83t\83F\83C\83X\94j\8aü\81i\93à\95\94\8fó\91Ô\88Û\8e\9d\81j
+       virtual HRESULT DeleteDeviceObjects()                   { return S_OK; }        // \81@\81@\81@\81@\81@\81@\81V\81@\81@\81@\81@\81@\81@\93à\95\94\8fó\91Ô\94j\8aü
+       virtual HRESULT FinalCleanup()                                  { return S_OK; }        // \8dÅ\8cã\82P\89ñ\82¾\82¯\82Ì\8fI\97¹\8f\88\97\9d\81iWM_CLOSE\93à\82Å\8cÄ\82Î\82ê\82é\81j
+       virtual bool    Render()                                                { return false; }       // \83V\81[\83\93\82Ì\90i\8ds\81\95\95`\89æ\81it3D\8aÂ\8b«\82Ì\95`\89æ()\82©\82ç\8cÄ\82Ñ\8fo\82³\82ê\82é; true\82ð\95Ô\82·\82Æ\83A\83v\83\8a\8fI\97¹\81j
+       virtual HRESULT tFlip\82Ü\82½\82ÍBlt();
+
+       virtual void tWaitAMoment\82Ì\95`\89æ();              // \83f\83o\83C\83X\90Ø\91Ö\8e\9e\82Ì Wait a moment \89æ\91\9c\82Ì\95`\89æ\81i\95K\97v\82 \82ê\82Î\8eÀ\91\95\82·\82é\81j
+
+       void    t\91S\89æ\96Ê\81E\83E\83B\83\93\83h\83E\83\82\81[\83h\82ð\90Ø\82è\91Ö\82¦\82é();                                                        // \83E\83B\83\93\83h\83E\83X\83\8c\83b\83h\82Å\82È\82¯\82ê\82Î\90Ø\82è\82©\82¦\82ç\82ê\82È\82¢\82Ì\82Å\81A\83Q\81[\83\80\83X\83\8c\83b\83h\82©\82ç\82Í\8cÄ\82Î\82È\82¢\82±\82Æ\81B
+       void    t\8c»\8dÝ\82Ì\83E\83B\83\93\83h\83E\82Ì\83E\83B\83\93\83h\83E\97Ì\88æ\82Æ\83N\83\89\83C\83A\83\93\83g\97Ì\88æ\82ð\8eæ\93¾\82·\82é();        // \82Ç\82¿\82ç\82à\83X\83N\83\8a\81[\83\93\8dÀ\95W\82Å\8eæ\93¾\82·\82é\81B
+       HRESULT t\90\82\92¼\93¯\8aú\82ð\8eg\82í\82È\82¢\83E\83F\83C\83g\82ÆBlt( LPRECT prc\83N\83\89\83C\83A\83\93\83g\97Ì\88æ );
+       void    tFPS\82ð\8eZ\8fo\82·\82é();
+
+       DWORD   dw\83E\83B\83\93\83h\83E\83X\83^\83C\83\8b;           // \83\82\81[\83h\90Ø\91Ö\97p\82É\83E\83B\83\93\83h\83E\83X\83^\83C\83\8b\82ð\95Û\91
+       DWORD   dw\91S\89æ\96Ê\83X\83^\83C\83\8b;                       // \83\82\81[\83h\90Ø\91Ö\97p\82É\91S\89æ\96Ê\83X\83^\83C\83\8b\82ð\95Û\91
+       RECT    rc\83E\83B\83\93\83h\83E\97Ì\88æ;                       // \83\82\81[\83h\90Ø\91Ö\97p\82É\83E\83B\83\93\83h\83E\97Ì\88æ\82ð\95Û\91
+       RECT    rc\83N\83\89\83C\83A\83\93\83g\97Ì\88æ;                     // \83\82\81[\83h\90Ø\91Ö\97p\82É\83N\83\89\83C\83A\83\93\83g\97Ì\88æ\82ð\95Û\91
+
+       bool    bScreenSaverEnable;                     // \8bN\93®\8e\9e\81A\83X\83N\83\8a\81[\83\93\83Z\81[\83o\82ª\97L\8cø\82¾\82Á\82½\82È\82çtrue
+       EXECUTION_STATE exeState;                       // \83\82\83j\83^\93d\8c¹\90Ý\92è\95Û\91
+};
+
+       }//AppBase
+}//FDK
+
+using namespace FDK::AppBase;