0

IE の rebar/toolbar にメッセージを送信しようとしましたが、ツールバーがメッセージの効果を受けていないようです。誰かがどこに問題があるか教えてもらえますか?

HRESULT CButtonDemoBHO::onDocumentComplete(IDispatch *pDisp, VARIANT *vUrl)     
{           
    m_hWnd = NULL;
    SHANDLE_PTR nBrowser = NULL;
    HRESULT hr = m_spWebBrowser2->get_HWND(&nBrowser);
    m_hWnd = (HWND)nBrowser;
    SendMessage(m_hWnd, WM_test, 0, 0);
    return S_OK;    
}
4

2 に答える 2

2

hrとの値とm_hWndの戻り値を確認することをお勧めしますsendmessage()。「メッセージ送信が機能しない」とは思えませんが、「メッセージが届かない」と喜んで信じています。有効な宛先に送信していることを確認しますか?

于 2010-06-30T03:29:44.560 に答える
0

次のように、とSendMessageの間で呼び出しをラップしたい場合があります...SetLastError()GetLastError()

SetLastError(0);
LRESULT rv = SendMessage(m_hWnd, WM_test, 0, 0);
DWORD errCode = GetLastError();
if(errCode != ERROR_SUCCESS) {
    // log error information here.
}

SendMessage からの戻り値は、処理関数から WM_test が返すものに依存するため、そのメッセージについてもドキュメントを確認します。

通常、GetLastError() が返すエラー コードを の dwMessageId パラメータとして渡すことにより、人間が判読できるエラー メッセージを取得できます FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ...)

FormatMessage ドキュメント.

于 2010-06-30T04:04:32.017 に答える