Win32 API 日本語リファレンス
ホームUI.TextServices › ITfMessagePump

ITfMessagePump

COM
IID8f1b8ad8-0b6b-4874-90c5-bd76011e8f7c継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ITfMessagePump インターフェイスは TSF マネージャーによって実装され、アプリケーションがアプリケーションのメッセージ キューからメッセージを取得するために使用します。

解説(Remarks)

アプリケーションが Unicode の場合は、PeekMessageW メソッドおよび GetMessageW メソッドを使用してください。それ以外の場合は、PeekMessageA メソッドおよび GetMessageA メソッドを使用してください。

使用例

ITfThreadMgr


HRESULT hr;
ITfMessagePump *pMessagePump;

hr = pThreadManager->QueryInterface(IID_ITfMessagePump, (LPVOID*)&pMessagePump);
if(SUCCEEDED(hr))
{
    //Use the ITfMessagePump interface. 
    
    //Release the ITfMessagePump interface. 
    pMessagePump->Release();
}

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT PeekMessageA(MSG* pMsg, HWND hwnd, DWORD wMsgFilterMin, DWORD wMsgFilterMax, DWORD wRemoveMsg, BOOL* pfResult)

ITfMessagePump::PeekMessageA メソッド

pMsgMSG*outメッセージ データを受け取る MSG 構造体へのポインター。
hwndHWNDinメッセージを取得する対象のウィンドウのハンドル。ウィンドウは現在のスレッドに属している必要があります。この値が NULL の場合、このメソッドは呼び出し元スレッドが所有する任意のウィンドウのメッセージを取得します。
wMsgFilterMinDWORDin取得するメッセージ値の下限を指定します。
wMsgFilterMaxDWORDin取得するメッセージ値の上限を指定します。
wRemoveMsgDWORDinメッセージの処理方法を指定します。詳細については、PeekMessage 関数を参照してください。
pfResultBOOL*outPeekMessage 関数の戻り値を受け取る BOOL へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。

解説(Remarks)

wMsgFilterMinwMsgFilterMax がどちらも 0 の場合、このメソッドは利用可能なすべてのメッセージを返します。つまり、範囲によるフィルター処理は行われません。

vtbl 4 HRESULT GetMessageA(MSG* pMsg, HWND hwnd, DWORD wMsgFilterMin, DWORD wMsgFilterMax, BOOL* pfResult)

ITfMessagePump::GetMessageA メソッド

pMsgMSG*outメッセージ データを受け取る MSG 構造体へのポインター。
hwndHWNDinメッセージを取得する対象のウィンドウのハンドル。ウィンドウは現在のスレッドに属している必要があります。この値が NULL の場合、このメソッドは呼び出し元スレッドに属する任意のウィンドウのメッセージを取得します。
wMsgFilterMinDWORDin取得するメッセージ値の下限を指定します。
wMsgFilterMaxDWORDin取得するメッセージ値の上限を指定します。
pfResultBOOL*outGetMessage 関数の戻り値を受け取る BOOL 値へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。

解説(Remarks)

wMsgFilterMinwMsgFilterMax がどちらも 0 の場合、このメソッドは利用可能なすべてのメッセージを返します。つまり、範囲によるフィルター処理は行われません。

vtbl 5 HRESULT PeekMessageW(MSG* pMsg, HWND hwnd, DWORD wMsgFilterMin, DWORD wMsgFilterMax, DWORD wRemoveMsg, BOOL* pfResult)

ITfMessagePump::PeekMessageW メソッド

pMsgMSG*outメッセージ データを受け取る MSG 構造体へのポインター。
hwndHWNDinメッセージを取得する対象のウィンドウのハンドル。ウィンドウは現在のスレッドに属している必要があります。この値が NULL の場合、このメソッドは呼び出し元スレッドに属する任意のウィンドウのメッセージを取得します。
wMsgFilterMinDWORDin取得するメッセージ値の下限を指定します。
wMsgFilterMaxDWORDin取得するメッセージ値の上限を指定します。
wRemoveMsgDWORDinメッセージの処理方法を指定します。詳細については、PeekMessage 関数を参照してください。
pfResultBOOL*outPeekMessage 関数の戻り値を受け取る BOOL へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。

解説(Remarks)

wMsgFilterMinwMsgFilterMax がどちらも 0 の場合、このメソッドは利用可能なすべてのメッセージを返します。つまり、範囲によるフィルター処理は行われません。

vtbl 6 HRESULT GetMessageW(MSG* pMsg, HWND hwnd, DWORD wMsgFilterMin, DWORD wMsgFilterMax, BOOL* pfResult)

ITfMessagePump::GetMessageW メソッド

pMsgMSG*outメッセージ データを受け取る MSG 構造体へのポインター。
hwndHWNDinメッセージを取得する対象のウィンドウのハンドル。ウィンドウは現在のスレッドに属している必要があります。この値が NULL の場合、このメソッドは呼び出し元スレッドが所有する任意のウィンドウのメッセージを取得します。
wMsgFilterMinDWORDin取得するメッセージ値の下限を指定します。
wMsgFilterMaxDWORDin取得するメッセージ値の上限を指定します。
pfResultBOOL*outGetMessage 関数の戻り値を受け取る BOOL へのポインター。

戻り値

このメソッドは次のいずれかの値を返します。

説明
S_OK
メソッドは成功しました。
E_INVALIDARG
1 つ以上のパラメーターが無効です。

解説(Remarks)

wMsgFilterMinwMsgFilterMax がどちらも 0 の場合、このメソッドは利用可能なすべてのメッセージを返します。つまり、範囲によるフィルター処理は行われません。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ITfMessagePump "{8F1B8AD8-0B6B-4874-90C5-BD76011E8F7C}"
#usecom global ITfMessagePump IID_ITfMessagePump "{}"
#comfunc global ITfMessagePump_PeekMessageA  3 var,sptr,int,int,int,var
#comfunc global ITfMessagePump_GetMessageA   4 var,sptr,int,int,var
#comfunc global ITfMessagePump_PeekMessageW  5 var,sptr,int,int,int,var
#comfunc global ITfMessagePump_GetMessageW   6 var,sptr,int,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。