--- /dev/null
+#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;