C++ sendmessage不工作

C++ sendmessage不工作,c++,sendmessage,C++,Sendmessage,我尝试将消息发送到IE钢筋/工具栏,但我的工具栏似乎不起消息作用。谁能告诉我哪里出了毛病 HRESULT CButtonDemoBHO::onDocumentComplete(IDispatch *pDisp, VARIANT *vUrl) { m_hWnd = NULL; SHANDLE_PTR nBrowser = NULL; HRESULT hr = m_spWebBrowser2->get_HWND(&nBrowser

我尝试将消息发送到IE钢筋/工具栏,但我的工具栏似乎不起消息作用。谁能告诉我哪里出了毛病

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;    
}

我强烈建议您检查
hr
m_-hWnd
的值以及
sendmessage()
的返回值。我怀疑“发送消息不起作用”,但我愿意相信“我的消息没有到达”。您确定要将其发送到有效的目标吗?

您可能希望在
SetLastError()
GetLastError()
之间包装对
SendMessage
的调用,如下所示

SetLastError(0);
LRESULT rv = SendMessage(m_hWnd, WM_test, 0, 0);
DWORD errCode = GetLastError();
if(errCode != ERROR_SUCCESS) {
    // log error information here.
}
SendMessage的返回值取决于WM_测试从处理函数返回的内容,因此我也会检查文档中的该消息

通常,您可以通过在
FormatMessage(FORMAT\u message\u FROM\u SYSTEM,…)
中传递GetLastError()作为dwMessageId参数返回的错误代码来获取人类可读的错误消息