TNB Library
クラス | 公開メンバ関数 | 限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
CWindowProcedureHooker クラス

ウィンドウプロシージャフッククラス [詳解]

#include <TnbWindowProcedureHooker.h>

+ CWindowProcedureHooker の継承関係図

公開メンバ関数

bool Attach (HWND hWnd)
 [設定] アタッチ [詳解]
 
 CWindowProcedureHooker (void)
 コンストラクタ [詳解]
 
void Destroy (void)
 [設定] 破棄 [詳解]
 
void Detach (void)
 [設定] デタッチ [詳解]
 
DWORD GetExStyle (void) const
 [取得] 拡張スタイル取得 [詳解]
 
HWND GetSafeHwnd (void) const
 [取得] ウィンドウハンドル取得 [詳解]
 
DWORD GetStyle (void) const
 [取得] スタイル取得 [詳解]
 
bool IsAttached (void) const
 [確認] アタッチ中? [詳解]
 
void ModifyStyle (DWORD dwRemove, DWORD dwAdd)
 [変更] スタイル変更 [詳解]
 
void ModifyStyleEx (DWORD dwRemove, DWORD dwAdd)
 [変更] 拡張スタイル変更 [詳解]
 
BOOL PostMessage (UINT message, WPARAM wParam, LPARAM lParam)
 [処理] PostMessage. [詳解]
 
LRESULT SendMessage (UINT message, WPARAM wParam, LPARAM lParam)
 [処理] SendMessage. [詳解]
 
 ~CWindowProcedureHooker (void)
 デストラクタ [詳解]
 

限定公開メンバ関数

virtual void OnAttached (void)
 [通知] アタッチ通知 [詳解]
 
virtual void OnDetached (void)
 [通知] デタッチ通知 [詳解]
 
virtual void PreAttach (HWND hWnd)
 [通知] アタッチ直前通知 [詳解]
 
virtual void PreDetach (void)
 [通知] デタッチ直前通知 [詳解]
 
virtual LRESULT WindowProc (UINT message, WPARAM wParam, LPARAM lParam)
 [通知] for processing Windows messages. [詳解]
 

限定公開変数類

HWND m_hWnd
 管理しているウィンドウ [詳解]
 

詳解

ウィンドウプロシージャフッククラス

WindowProc() を継承して、 Attach することで、ウィンドウプロシージャを処理することが可能です。
使用例

    class CMyProc : public CWindowProcedureHooker
    {
        virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
        {
            if ( message == XXX )
            {
                // 処理を行う。 必要によって、スーパークラスの WindowProcをコールせずに終わってもよし。
            }
            return CWindowProcedureHooker::WindowProc(message, wParam, lParam); 
        }
    };

    class CFooDlg : public CDialog
    {
            ;
        CMyProc m_procHook;
            ;
    };

    BOOL CFooDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
            ;
        m_procHook.Attach(*this);   // アタッチする。これ以降、 CMyProcの WindowProcがコールバックされる。      
            ;

 
必要ファイル
TnbWindowProcedureHooker.h
日付
08/10/21 新規作成
09/04/22 マップを CSimpleMap に変更
09/04/23 旧プロシージャコールに ::CallWindowProc() を使うように修正
11/11/29 IsAttached() 新規。

TnbWindowProcedureHooker.h73 行目に定義があります。

構築子と解体子

◆ CWindowProcedureHooker()

コンストラクタ

TnbWindowProcedureHooker.h77 行目に定義があります。

◆ ~CWindowProcedureHooker()

デストラクタ

TnbWindowProcedureHooker.h82 行目に定義があります。

関数詳解

◆ Attach()

bool Attach ( HWND  hWnd)

[設定] アタッチ

引数
hWnd対象のウィンドウ
戻り値
true成功。
false失敗。

TnbWindowProcedureHooker.h103 行目に定義があります。

◆ Destroy()

void Destroy ( void  )

[設定] 破棄

覚え書き
Detach() とは異なり、 PreDetach() , OnDetached() が呼び出されません。

TnbWindowProcedureHooker.h156 行目に定義があります。

◆ Detach()

void Detach ( void  )

[設定] デタッチ

TnbWindowProcedureHooker.h135 行目に定義があります。

◆ GetExStyle()

DWORD GetExStyle ( void  ) const

[取得] 拡張スタイル取得

戻り値
拡張スタイル

TnbWindowProcedureHooker.h220 行目に定義があります。

◆ GetSafeHwnd()

HWND GetSafeHwnd ( void  ) const

[取得] ウィンドウハンドル取得

戻り値
NULLアタッチしていない
NULL以外ウィンドウハンドル

TnbWindowProcedureHooker.h176 行目に定義があります。

◆ GetStyle()

DWORD GetStyle ( void  ) const

[取得] スタイル取得

戻り値
スタイル

TnbWindowProcedureHooker.h211 行目に定義があります。

◆ IsAttached()

bool IsAttached ( void  ) const

[確認] アタッチ中?

戻り値
trueアタッチ中
false

TnbWindowProcedureHooker.h92 行目に定義があります。

◆ ModifyStyle()

void ModifyStyle ( DWORD  dwRemove,
DWORD  dwAdd 
)

[変更] スタイル変更

引数
dwRemove除去されるウィンドウ スタイル
dwAdd追加されるウィンドウ スタイル

TnbWindowProcedureHooker.h230 行目に定義があります。

◆ ModifyStyleEx()

void ModifyStyleEx ( DWORD  dwRemove,
DWORD  dwAdd 
)

[変更] 拡張スタイル変更

引数
dwRemove除去されるウィンドウ 拡張スタイル
dwAdd追加されるウィンドウ 拡張スタイル

TnbWindowProcedureHooker.h245 行目に定義があります。

◆ OnAttached()

virtual void OnAttached ( void  )
protectedvirtual

[通知] アタッチ通知

CCustomWindowFrameで再実装されています。

TnbWindowProcedureHooker.h266 行目に定義があります。

◆ OnDetached()

virtual void OnDetached ( void  )
protectedvirtual

[通知] デタッチ通知

TnbWindowProcedureHooker.h276 行目に定義があります。

◆ PostMessage()

BOOL PostMessage ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)

[処理] PostMessage.

アタッチしているウィンドウにPostMessageします。

引数
messageメッセージ。
wParamWPARAM。
lParamLPARAM。
戻り値
結果。

TnbWindowProcedureHooker.h202 行目に定義があります。

◆ PreAttach()

virtual void PreAttach ( HWND  hWnd)
protectedvirtual

[通知] アタッチ直前通知

引数
hWndアタッチするHWND。

CCustomWindowFrameで再実装されています。

TnbWindowProcedureHooker.h261 行目に定義があります。

◆ PreDetach()

virtual void PreDetach ( void  )
protectedvirtual

[通知] デタッチ直前通知

CCustomWindowFrameで再実装されています。

TnbWindowProcedureHooker.h271 行目に定義があります。

◆ SendMessage()

LRESULT SendMessage ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)

[処理] SendMessage.

アタッチしているウィンドウにSendMessageします。

引数
messageメッセージ。
wParamWPARAM。
lParamLPARAM。
戻り値
結果。

TnbWindowProcedureHooker.h189 行目に定義があります。

◆ WindowProc()

virtual LRESULT WindowProc ( UINT  message,
WPARAM  wParam,
LPARAM  lParam 
)
protectedvirtual

[通知] for processing Windows messages.

メッセージ受信したらコールされます。これをオーバーライドして処理を追加します。

引数
messageメッセージ
wParamWPARAM
lParamLPARAM
戻り値
リザルト。

COwnerdrawMenuSupportProcedureHookerで再実装されています。

TnbWindowProcedureHooker.h286 行目に定義があります。

メンバ詳解

◆ m_hWnd

HWND m_hWnd
protected

管理しているウィンドウ

TnbWindowProcedureHooker.h296 行目に定義があります。