user32: Implement return value for DdeClientTransaction for XTYP_EXECUTE.

This commit is contained in:
Dan Kegel 2007-11-09 06:45:51 -08:00 committed by Alexandre Julliard
parent 6ff78347e2
commit aaa93200ad
2 changed files with 11 additions and 5 deletions

View File

@ -985,6 +985,15 @@ static WDML_QUEUE_STATE WDML_HandleReply(WDML_CONV* pConv, MSG* msg, HDDEDATA* h
case WM_DDE_TERMINATE:
qs = WDML_HandleIncomingTerminate(pConv, msg, hdd);
break;
case WM_DDE_ACK:
/* This happens at end of DdeClientTransaction XTYP_EXECUTE
* Without this assignment, DdeClientTransaction's return value is undefined
* See also http://support.microsoft.com/kb/102574
*/
*hdd = (HDDEDATA)TRUE;
if (ack)
*ack = DDE_FACK;
break;
}
break;
case WDML_QS_BLOCK:

View File

@ -414,11 +414,8 @@ static void test_ddeml_client(void)
op = DdeClientTransaction((LPBYTE)hdata, -1, conversation, NULL, 0, XTYP_EXECUTE, default_timeout, &res);
ret = DdeGetLastError(client_pid);
ok(ret == DMLERR_NO_ERROR, "Expected DMLERR_NO_ERROR, got %d\n", ret);
todo_wine
{
ok(op == (HDDEDATA)TRUE, "Expected TRUE, got %p\n", op);
ok(res == DDE_FACK, "Expected DDE_FACK, got %d\n", res);
}
ok(op == (HDDEDATA)TRUE, "Expected TRUE, got %p\n", op);
ok(res == DDE_FACK, "Expected DDE_FACK, got %d\n", res);
/* XTYP_EXECUTE, no data */
res = 0xdeadbeef;