dcdd144598 2011-02-23 kinaba: #ifndef _KILIB_APP_H_ dcdd144598 2011-02-23 kinaba: #define _KILIB_APP_H_ dcdd144598 2011-02-23 kinaba: #include "types.h" dcdd144598 2011-02-23 kinaba: #include "log.h" dcdd144598 2011-02-23 kinaba: #ifndef __ccdoc__ dcdd144598 2011-02-23 kinaba: namespace ki { dcdd144598 2011-02-23 kinaba: #endif dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //========================================================================= dcdd144598 2011-02-23 kinaba: //@{ @pkg ki.Core //@} dcdd144598 2011-02-23 kinaba: //@{ dcdd144598 2011-02-23 kinaba: // アプリケーション全体の統括 dcdd144598 2011-02-23 kinaba: // dcdd144598 2011-02-23 kinaba: // アプリ起動/終了用処理を担当します。 dcdd144598 2011-02-23 kinaba: // 旧kilibと違って、ユーザー側のアプリケーションクラスを dcdd144598 2011-02-23 kinaba: // ここから派生させることは出来ません。ユーザーのコードは、 dcdd144598 2011-02-23 kinaba: // 必ず kmain() というグローバル関数から実行開始されます。 dcdd144598 2011-02-23 kinaba: // このAppクラス自体は、主にHINSTANCEの管理を行うだけ。 dcdd144598 2011-02-23 kinaba: //@} dcdd144598 2011-02-23 kinaba: //========================================================================= dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: class App dcdd144598 2011-02-23 kinaba: { dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: enum imflag { CTL=1, COM=2, OLE=4 }; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ dcdd144598 2011-02-23 kinaba: // 種々のモジュールを初期化する dcdd144598 2011-02-23 kinaba: // dcdd144598 2011-02-23 kinaba: // これで初期化しておくと、App終了時に自動で dcdd144598 2011-02-23 kinaba: // 終了処理が行われるので簡単便利でございます。 dcdd144598 2011-02-23 kinaba: // @param what CTL(コモンコントロール)、COM、OLE dcdd144598 2011-02-23 kinaba: //@} dcdd144598 2011-02-23 kinaba: void InitModule( imflag what ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ プロセス強制終了 //@} dcdd144598 2011-02-23 kinaba: void Exit( int code ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HACCEL LoadAccel( LPCTSTR name ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HACCEL LoadAccel( UINT id ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HBITMAP LoadBitmap( LPCTSTR name ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HBITMAP LoadBitmap( UINT id ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース(OBM_XXXX) //@} dcdd144598 2011-02-23 kinaba: HBITMAP LoadOemBitmap( LPCTSTR obm ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HCURSOR LoadCursor( LPCTSTR name ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HCURSOR LoadCursor( UINT id ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース(IDC_XXXX) //@} dcdd144598 2011-02-23 kinaba: HCURSOR LoadOemCursor( LPCTSTR idc ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HICON LoadIcon( LPCTSTR name ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HICON LoadIcon( UINT id ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース(IDI_XXXX) //@} dcdd144598 2011-02-23 kinaba: HICON LoadOemIcon( LPCTSTR idi ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HMENU LoadMenu( LPCTSTR name ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: HMENU LoadMenu( UINT id ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ リソース //@} dcdd144598 2011-02-23 kinaba: int LoadString( UINT id, LPTSTR buf, int siz ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: public: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ インスタンスハンドル //@} dcdd144598 2011-02-23 kinaba: HINSTANCE hinst() const; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ Windowsのバージョン //@} dcdd144598 2011-02-23 kinaba: static const OSVERSIONINFO& osver(); dcdd144598 2011-02-23 kinaba: static bool isWin95(); dcdd144598 2011-02-23 kinaba: static bool isNT(); dcdd144598 2011-02-23 kinaba: static bool isNewTypeWindows(); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: private: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: App(); dcdd144598 2011-02-23 kinaba: ~App(); dcdd144598 2011-02-23 kinaba: void SetExitCode( int code ); dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: private: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: int exitcode_; dcdd144598 2011-02-23 kinaba: ulong loadedModule_; dcdd144598 2011-02-23 kinaba: const HINSTANCE hInst_; dcdd144598 2011-02-23 kinaba: static App* pUniqueInstance_; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: private: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: friend void APIENTRY Startup(); dcdd144598 2011-02-23 kinaba: friend inline App& app(); dcdd144598 2011-02-23 kinaba: NOCOPY(App); dcdd144598 2011-02-23 kinaba: }; dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //------------------------------------------------------------------------- dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //@{ 唯一のアプリ情報オブジェクトを返す //@} dcdd144598 2011-02-23 kinaba: inline App& app() dcdd144598 2011-02-23 kinaba: { return *App::pUniqueInstance_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HACCEL App::LoadAccel( LPCTSTR name ) dcdd144598 2011-02-23 kinaba: { return ::LoadAccelerators( hInst_, name ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HACCEL App::LoadAccel( UINT id ) dcdd144598 2011-02-23 kinaba: { return ::LoadAccelerators( hInst_, MAKEINTRESOURCE(id) ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HBITMAP App::LoadBitmap( LPCTSTR name ) dcdd144598 2011-02-23 kinaba: { return ::LoadBitmap( hInst_, name ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HBITMAP App::LoadBitmap( UINT id ) dcdd144598 2011-02-23 kinaba: { return ::LoadBitmap( hInst_, MAKEINTRESOURCE(id) ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HBITMAP App::LoadOemBitmap( LPCTSTR obm ) dcdd144598 2011-02-23 kinaba: { return ::LoadBitmap( NULL, obm ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HCURSOR App::LoadCursor( LPCTSTR name ) dcdd144598 2011-02-23 kinaba: { return ::LoadCursor( hInst_, name ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HCURSOR App::LoadCursor( UINT id ) dcdd144598 2011-02-23 kinaba: { return ::LoadCursor( hInst_, MAKEINTRESOURCE(id) ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HCURSOR App::LoadOemCursor( LPCTSTR idc ) dcdd144598 2011-02-23 kinaba: { return ::LoadCursor( NULL, idc ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HICON App::LoadIcon( LPCTSTR name ) dcdd144598 2011-02-23 kinaba: { return ::LoadIcon( hInst_, name ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HICON App::LoadIcon( UINT id ) dcdd144598 2011-02-23 kinaba: { return ::LoadIcon( hInst_, MAKEINTRESOURCE(id) ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HICON App::LoadOemIcon( LPCTSTR idi ) dcdd144598 2011-02-23 kinaba: { return ::LoadIcon( NULL, idi ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HMENU App::LoadMenu( LPCTSTR name ) dcdd144598 2011-02-23 kinaba: { return ::LoadMenu( hInst_, name ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HMENU App::LoadMenu( UINT id ) dcdd144598 2011-02-23 kinaba: { return ::LoadMenu( hInst_, MAKEINTRESOURCE(id) ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline int App::LoadString( UINT id, LPTSTR buf, int siz ) dcdd144598 2011-02-23 kinaba: { return ::LoadString( hInst_, id, buf, siz ); } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: inline HINSTANCE App::hinst() const dcdd144598 2011-02-23 kinaba: { return hInst_; } dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: //========================================================================= dcdd144598 2011-02-23 kinaba: dcdd144598 2011-02-23 kinaba: } // namespace ki dcdd144598 2011-02-23 kinaba: #endif // _KILIB_APP_H_