#include <ddeml.h> |
DWORD DdeQueryString(idInst, hsz, lpsz, cchMax, codepage) | |||||
DWORD idInst; | /* instance identifier, */ | ||||
HSZ hsz; | /* handle of string, */ | ||||
LPSTR lpsz; | /* address of destination buffer | */ | |||
DWORD cchMax; | /* length of buffer, */ | ||||
int codepage; | /* code page | */ |
The DdeQueryString function copies text associated with a string handle into a buffer.
The string returned in the buffer is always null-terminated. If the string is longer than (cchMax – 1), only the first (cchMax – 1) characters of the string are copied.
If the lpsz parameter is NULL, this function obtains the length, in bytes, of the string associated with the string handle. The length does not include the terminating null character.
idInst
Specifies the application-instance identifier obtained by a previous call to the DdeInitialize function.
hsz
Identifies the string to copy. This handle must have been created by a previous call to the DdeCreateStringHandle function.
lpsz
Points to a buffer that receives the string. To obtain the length of the string, this parameter should be set to NULL.
cchMax
Specifies the length, in bytes, of the buffer pointed to by the lpsz parameter. If the string is longer than (cchMax – 1), it will be truncated. If the lpsz parameter is set to NULL, this parameter is ignored.
codepage
Specifies the code page used to render the string. This value should be either CP_WINANSI or the value returned by the GetKBCodePage function.
The return value is the length, in bytes, of the returned text (not including the terminating null character) if the lpsz parameter specified a valid pointer. The return value is the length of the text associated with the hsz parameter (not including the terminating null character) if the lpsz parameter specified a NULL pointer. The return value is NULL if an error occurs.
The following example uses the DdeQueryString function to obtain a service name and topic name that a server has registered:
UINT type;
HSZ hsz1;
HSZ hsz2;
char szBaseName[16];
char szInstName[16];
if (type == XTYP_REGISTER) {
/* Copy the base service name to a buffer. */
DdeQueryString(idInst, hsz1, (LPSTR) &szBaseName,
sizeof(szBaseName), CP_WINANSI);
/* Copy the instance-specific service name to a buffer. */
DdeQueryString(idInst, hsz2, (LPSTR) &szInstName,
sizeof(szInstName), CP_WINANSI);
return (HDDEDATA) TRUE;
}
DdeCmpStringHandles, DdeCreateStringHandle, DdeFreeStringHandle, DdeInitialize