#include <tanuki_app.h>
Public メソッド | |
| virtual void | Initialize (HINSTANCE h_instance, LPCTSTR argv, int show_flag) | 
| アプリケーションの初期化  | |
| virtual void | Terminate () | 
| アプリケーションの終端処理  | |
| bool | RegisterModelessDialog (HWND h_dlg) | 
| モードレスダイアログの登録  | |
| bool | RemoveModelessDialog (HWND h_dlg) | 
| モードレスダイアログの削除 | |
| bool | DispatchModelessDialogMessage (LPMSG p_msg) | 
| モードレスダイアログ宛てのメッセージを転送する | |
| HINSTANCE | GetInstanceHandle () const | 
| アプリケーションインスタンスのハンドルを取得する  | |
| bool | IsUseMessageLoop () const | 
| メッセージループを行うかどうかのフラグを得る  | |
| bool | IsUseTranslateMessage () const | 
| 仮想キーメッセージを文字メッセージに変換するかどうかのフラグを得る  | |
| bool | IsUseTranslateAccelerator () const | 
| アクセラレータキーを使用するかどうかのフラグを得る  | |
| bool | IsUseModelessDialog () const | 
| モードレスダイアログを使用するかどうかのフラグを得る  | |
Static Public メソッド | |
| cl_application * | GetApplicationPtr () | 
| アプリケーションに唯一のインスタンスへのポインタを得る  | |
Public 変数 | |
| int | M_ReturnValue | 
| アプリケーションの戻り値  | |
Protected メソッド | |
| cl_application () | |
| コンストラクタ | |
| virtual | ~cl_application ()=0 | 
| デストラクタ | |
| void | useMessageLoop (bool is_use=true) | 
| メッセージループを行うかどうかを指定する  | |
| void | useTranslateMessage (bool is_use=true) | 
| 仮想キーメッセージを文字メッセージに変換するかを指定する  | |
| void | useTranslateAccelerator (bool is_use=true) | 
| アクセラレータキーを使用するかを指定する  | |
| void | useModelessDialog (bool is_use=true) | 
| モードレスダイアログを使用するかを指定する  | |
アプリケーションの初期化・終端処理を担う基本クラス。 このオブジェクトの派生クラスインスタンスを、アプリケーションイメージごとに 1 つだけ保持すること (通常は静的な外部変数かもしくは派生クラスにおける 静的公開フィールドを 1 つ持たせておけばよい) 。 それにより、本ライブラリ内部に実装される _tWinMain() 関数より参照され、 用意されたインスタンスの Initialize() メソッドがメッセージループの開始前に 呼び出され、さらにメッセージループ終了直後に Terminate() メソッドが呼び出される。
 派生クラスの実装例を以下に示すので参考まで。 
class cl_my_main_wnd; // ウィンドウ派生クラス // アプリケーション派生クラス class cl_my_app : public cl_application { // インスタンスを静的メンバフィールドとする場合、他所で誤って // 呼び出さないよう、コンストラクタとデストラクタは非公開メソッドと // することができる。その方がよい。 private: // コンストラクタ cl_my_app() : cl_application() {} // デストラクタ virtual ~cl_my_app() {} public: // 初期化処理のオーバーライド virtual bool Initialize(HINSTANCE h_instance) { // アプリケーションインスタンスを親クラスフィールドに格納 cl_application::Initialize(h_instance); // ... 初期化処理をここに記述 ... } // 終端処理のオーバーライド virtual bool Terminate() { // ... 終端処理をここに記述 ... } public: // このアプリケーションに唯一のアプリケーションインスタンス static cl_my_app m_my_app; private: // ウィンドウオブジェクト cl_my_main_wnd m_my_main_window; }; // 静的メンバフィールドは、外部で定義する必要がある cl_my_app cl_my_app::m_my_app;
      
  | 
  
| 
 アプリケーションに唯一のインスタンスへのポインタを得る 
 
  | 
  
      
  | 
  
| 
 アプリケーションインスタンスのハンドルを取得する 
 
  | 
  
      
  | 
  ||||||||||||||||
| 
 アプリケーションの初期化 
 
 
 なお、このメソッドは WinMain() 関数から呼び出されることを前提と しています。このメソッド、およびこれをオーバーライドしたメソッドを、 それ以外の場所から呼び出さないようにしてください。  | 
  
      
  | 
  
| 
 メッセージループを行うかどうかのフラグを得る 
 
  | 
  
      
  | 
  
| 
 モードレスダイアログを使用するかどうかのフラグを得る 
 
  | 
  
      
  | 
  
| 
 アクセラレータキーを使用するかどうかのフラグを得る 
 
  | 
  
      
  | 
  
| 
 仮想キーメッセージを文字メッセージに変換するかどうかのフラグを得る 
 
  | 
  
      
  | 
  
| 
 モードレスダイアログの登録 
 
 
 本メソッドによって登録されたモードレスダイアログへの ウィンドウハンドルは、モードレスダイアログ宛てのメッセージを それらのモードレスダイアログへ転送するために使用される。  | 
  
      
  | 
  
| 
 アプリケーションの終端処理 
 
  | 
  
      
  | 
  
| 
 メッセージループを行うかどうかを指定する 
 
 false を指定すると、メッセージループはスキップし、 Initialize() メソッドの直後に Terminate() メソッドが呼ばれるように なります。 ウィンドウを伴わないアプリケーションや、モーダルダイアログボックス のみを表示するアプリケーションを作成する場合に使用してください。
インスタンス生成時のデフォルトは   | 
  
      
  | 
  
| 
 モードレスダイアログを使用するかを指定する 
 
 true で呼び出しておく 必要があります。 具体的には、このメソッドに true を渡して呼び出すと、 メッセージループにて IsDialogMessage API を使用するようになり、 モードレスダイアログボックスに宛てられたメッセージを ダイアログボックスプロシージャへ転送するようになります (具体的には、 Tab キーやカーソルキーなどによるフォーカス移動を 実現するものです。。。詳細は MSDN を参照のこと)。      | 
  
      
  | 
  
| 
 アクセラレータキーを使用するかを指定する 
 
 true を渡して呼び出すと、 メッセージループにて TranslateAccelerator API を使用するようになり、アクセラレータキーに登録されている 仮想キーに対して以下のようなメッセージの変換と転送が 行われるようになります (詳細は、 MSDN を参照のこと)。 
 true となっています。      | 
  
      
  | 
  
| 
 仮想キーメッセージを文字メッセージに変換するかを指定する 
 
 true を渡して呼び出すと、 メッセージループにて TranslateMessage API を使用するようになり、 以下のようにメッセージの変換が行われるようになります。 
 true となっています。      | 
  
      
  | 
  
| 
 アプリケーションの戻り値 アプリケーションの戻り値を格納する変数です。 _tWinMain() 関数は最後にこの値を返してアプリケーションを終了します。 モジュール生成時の初期値は 0 です。  | 
  
1.2.17