user32: Resend: Move character conversion logic to dde_server.d &remove todo's
Jeff Latimer
lats at yless4u.com.au
Mon Jan 26 02:06:22 CST 2009
Dmitry Timoshkov wrote:
> "Jeff Latimer" <lats at yless4u.com.au> wrote:
>> The issue is that the client passes data using messaging or DDEML
>> there is no method in the api to inform the server whether the data
>> is Unicode or not. The only method I have determined is to use
>> IsTextUnicode() but that is guessing. However, it looks like Windows
>> guesses too.
> Have you looked at the info returned DdeQueryConvInfo, particularly
> iCodePage in the conversation context?
I have inserted DdeQueryConvInfo into dde.c for checking whether it
would help in determining the Unicodeness of the passed data. The
results are below. The tests are to pass two messages, the 1st is non
Unicode and 2nd is Unicode. As can be seen, DdeQueryConvInfo does not
help with determining if the data is Unicode as the codepage is
determined by the Client initialisation not from the data.
dde.c:2472: start end to end server ASCII
dde.c:2403: Start end to end client ASCII
dde.c:2275: server iCodePage=1004
dde.c:2440: client iCodePage=1004
dde.c:2275: server iCodePage=1004
dde.c:2452: client iCodePage=1004
dde: 15 tests executed (0 marked as todo, 0 failures), 0 skipped.
dde.c:2472: start end to end server UNICODE
dde.c:2403: Start end to end client UNICODE
dde.c:2275: server iCodePage=1200
dde.c:2440: client iCodePage=1200
dde.c:2275: server iCodePage=1200
dde.c:2452: client iCodePage=1200
dde: 15 tests executed (0 marked as todo, 0 failures), 0 skipped.
dde.c:2472: start end to end server UNICODE
dde.c:2403: Start end to end client ASCII
dde.c:2275: server iCodePage=1004
dde.c:2440: client iCodePage=1004
dde.c:2275: server iCodePage=1004
dde.c:2452: client iCodePage=1004
dde: 15 tests executed (0 marked as todo, 0 failures), 0 skipped.
dde.c:2472: start end to end server ASCII
dde.c:2403: Start end to end client UNICODE
dde.c:2275: server iCodePage=1200
dde.c:2440: client iCodePage=1200
dde.c:2275: server iCodePage=1200
dde.c:2452: client iCodePage=1200
Server code issuing the query
pConvInfo.cb = sizeof(pConvInfo);
err = DdeQueryConvInfo(hconv, QID_SYNC, &pConvInfo);
ok(err == TRUE, "should be the number of bytes not %d\n", err);
err = DdeGetLastError(server_pid);
ok(err == DMLERR_NO_ERROR, "wrong dde error %x\n", err);
trace("server iCodePage=%d\n", pConvInfo.ConvCtxt.iCodePage);
Client code issuing the query
pConvInfo.cb = sizeof(pConvInfo);
err = DdeQueryConvInfo(hconv, QID_SYNC, &pConvInfo);
ok(err == TRUE, "should be the number of bytes not %d\n", err);
err = DdeGetLastError(client_pid);
ok(err == DMLERR_NO_ERROR, "wrong dde error %x\n", err);
trace("Client iCodePage=%d\n", pConvInfo.ConvCtxt.iCodePage);
More information about the wine-devel
mailing list