C++ sendmessage不工作
我尝试将消息发送到IE钢筋/工具栏,但我的工具栏似乎不起消息作用。谁能告诉我哪里出了毛病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
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参数返回的错误代码来获取人类可读的错误消息