views:

56

answers:

2

I try to sendmessage to an IE rebar/toolbar, but it seems that my toolbar does not take the message effect. Can someone tell me where is the fault ?

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;    
}
+2  A: 

I would stronly recommned that you check the values of hr and m_hWnd and the return value of sendmessage(). I doubt that "Send message does not work", but am willing to believe "my message does not arrive". Are you sure that you are sending it to a valid destination?

LeonixSolutions
A: 

You might want to wrap the call to SendMessage between SetLastError() and GetLastError(), like so...

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

The return value from SendMessage depends on what WM_test returns from the handling function, so I would check the docs for that message too.

You can usually get a human-readable error message by passing the error code that GetLastError() returns as the dwMessageId parameter in FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ...).

FormatMessage docs.

Pat Wallace