SendMessage всегда возвращает ноль? - PullRequest
5 голосов
/ 20 февраля 2010

Почему Windows SendMessage () всегда возвращает ноль, даже если доставка сообщения прошла успешно? Есть ли способ проверить ошибку доставки сообщения с помощью SendMessage ()?

EDIT

Забыл упомянуть, что я использую SendMessage () внутри c ++ DLL

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

«результат» всегда равен нулю :(, но сообщение успешно доставляется в другое окно

EDIT

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

1 Ответ

3 голосов
/ 20 февраля 2010

Нулевой возврат из SendMessage для WM_COPYDATA означает, что целевое приложение не обработало сообщение (FALSE = 0).

Сообщение может быть успешно доставлено, но если целевое приложение нене обработать сообщение должным образом (то есть, неверное возвращаемое значение или передать его в оконную процедуру по умолчанию), тогда ваш вызов SendMessage будет возвращаться с неправильным результатом.

Возможно, стоит посмотреть ваше времячто такое обработка сообщения WM_COPYDATA целевым приложением, если это возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...