#include <tanuki_wnd.h>
tanuki::cl_process_wndに対する継承グラフ
Public メソッド | |
void | EnableReplyPaint (bool is_reply=true) |
WM_PAINT メッセージに応答するかどうかを指定する. | |
Protected 型 | |
typedef BOOL(* | wm_handler_t )(cl_process_wnd *p_myself, WPARAM wprm, LPARAM lprm, LRESULT &result) |
ウィンドウメッセージハンドラ型 | |
typedef void(* | cmd_handler_t )(cl_process_wnd *p_myself) |
コマンドハンドラ型 | |
enum | { WMSG_HASH_TABLE_SIZE = 1021, CMD_HASH_TABLE_SIZE = 127 } |
Protected メソッド | |
cl_process_wnd () | |
コンストラクタ | |
virtual | ~cl_process_wnd () |
デストラクタ | |
void | registerWndMessageHandler (UINT msg_id, wm_handler_t handler) |
ウィンドウメッセージハンドラの追加 | |
bool | registerCommandHandler (WORD cmd_id, cmd_handler_t handler) |
コマンドハンドラの追加 | |
BOOL | callWndMessageHandler (UINT msg_id, WPARAM wprm, LPARAM lprm, LRESULT &result) |
ウィンドウメッセージハンドラの呼び出し | |
BOOL | callCommandHandler (WORD cmd_id) |
コマンドハンドラの呼び出し | |
virtual BOOL | onCreate (LPCREATESTRUCT p_create_st, LRESULT &result) |
WM_CREATE : ウィンドウ構築メッセージハンドラ. | |
virtual int | onDestroy () |
WM_DESTROY : ウィンドウ破棄メッセージハンドラ. | |
virtual BOOL | onMouseMove (const POINT &pos, DWORD key_indicator) |
WM_MOUSEMOVE : マウスカーソル移動メッセージハンドラ. | |
virtual BOOL | onMouseLeftButtonDown (const POINT &pos, DWORD key_indicator) |
WM_LBUTTONDOWN : マウス左ボタン押下メッセージハンドラ. | |
virtual BOOL | onMouseLeftButtonUp (const POINT &pos, DWORD key_indicator) |
WM_LBUTTONUP : マウス左ボタン解放メッセージハンドラ. | |
virtual void | onPaint (HDC h_dc, BOOL is_erase, const RECT &rect) |
WM_PAINT : 再描画メッセージハンドラ. |
ウィンドウメッセージを処理するウィンドウ (通常のウィンドウ、およびダイアログボックス) の基底となるクラス。 本クラスの存在意義は以下のとおり。
|
コマンドハンドラ型
|
|
ウィンドウメッセージハンドラ型
|
|
|
|
コンストラクタ 本クラスのコンストラクタは、ウィンドウメッセージハンドラ関数の ハッシュテーブルへの登録、および主要なコマンドハンドラ関数 (IDOK, IDCANCEL 等に対応する、 onOK() や onCancel() など) のハッシュテーブルへの登録を行う。 |
|
コマンドハンドラの呼び出し
この関数は、 cl_normal_wnd::window_procedure() 関数および cl_dialog::dialog_procedure() 関数より呼び出されることを 想定しています。従って、本メソッドは使用しないで下さい。 特定のウィンドウメッセージハンドラを実行する必要がある場合は、 SendCommand() メソッドか、もしくは PostCommand() メソッドを 使用してください。 |
|
ウィンドウメッセージハンドラの呼び出し
この関数は、 cl_normal_wnd::window_procedure() 関数および cl_dialog::dialog_procedure() 関数より呼び出されることを 想定しています。従って、本メソッドは使用しないで下さい。 特定のウィンドウメッセージハンドラを実行する必要がある場合は、 SendMessage() メソッドか、もしくは PostMessage() メソッドを 使用してください。 |
|
WM_PAINT メッセージに応答するかどうかを指定する.
|
|
WM_CREATE : ウィンドウ構築メッセージハンドラ.
result に 0 を設定し、 TRUE を返して終了するべきです。 |
|
WM_DESTROY : ウィンドウ破棄メッセージハンドラ.
|
|
WM_LBUTTONDOWN : マウス左ボタン押下メッセージハンドラ.
|
|
WM_LBUTTONUP : マウス左ボタン解放メッセージハンドラ.
|
|
WM_MOUSEMOVE : マウスカーソル移動メッセージハンドラ.
|
|
WM_PAINT : 再描画メッセージハンドラ.
h_dc に対して適切な描画処理を記述してください。rect が指し示す領域は、 InvalidateRect() メソッドによって 指定した矩形となります。なお、事前に EnableReplyPaint() メソッドを引数 false として呼んでいる場合、 このメッセージハンドラは呼び出されなくなります。 |
|
コマンドハンドラの追加
class cl_my_wnd : public cl_normal_wnd { public: // コンストラクタ cl_my_wnd(HINSTANCE h_instance) : cl_normal_wnd(h_instance) { // IDC_XXXX コマンドハンドラを登録する registerCommandHandler(IDC_XXXX, on_xxxx_reg); // ウィンドウの生成 prepareWindow(); } // デストラクタ ~cl_my_wnd() {} private: // IDC_XXXX コマンドハンドラ (登録用) static void on_xxxx_reg(cl_process_wnd * p_myself) { p_myself->on_xxxx(); } // IDC_XXXX コマンドハンドラ (本体) void on_xxxx() { // 処理内容をここに記述します。 } }; |
|
ウィンドウメッセージハンドラの追加
|