SendMessage总是返回ZERO?

nim*_*imo 5 c++ windows

为什么Windows SendMessage()总是返回ZERO,即使邮件传递成功?有没有用SendMessage()检查邮件传递失败?

编辑

忘记提到我在c ++ DLL中使用SendMessage()

LRESULT result = ::SendMessage(hwndOtherWindow,WM_COPYDATA, NULL/*(WPARAM)this->GetSafeHwnd()*/,(LPARAM)&structCDS);
Run Code Online (Sandbox Code Playgroud)

"结果"始终为零:(,但消息成功传递到其他窗口

编辑

BOOL CDlg::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
    return /*CDialog::OnCopyData(pWnd, pCopyDataStruct)*/ true;  //true is the trick
 }
Run Code Online (Sandbox Code Playgroud)

Mat*_*lin 3

WM_COPYDATA的 SendMessage 返回零意味着目标应用程序未处理该消息 (FALSE = 0)。

消息可能会成功传递,但如果目标应用程序没有正确处理消息(即错误的返回值,或将其传递给默认窗口过程),那么您的 SendMessage 调用将返回错误的结果。

如果可能的话,可能值得您花时间查看目标应用程序对 WM_COPYDATA 消息的处理方式。