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_hWndsendmessage()

于 2010-06-30T03:29:44.560 回答
0

您可能希望将调用包装在andSendMessage之间,就像这样......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() 返回的错误代码作为 FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ...).

FormatMessage 文档

于 2010-06-30T04:04:32.017 回答