Putting Data on the Clipboard
The following code fragment shows how an application
places text data on the clipboard, how it opens the clipboard, copies the
text to a shared memory object, empties the clipboard, and passes the pointer
to the clipboard:
#define MAXSTR 1024
PSZ pszSrc, pszDest;
BOOL fSuccess;
CHAR szClipString[MAXSTR];
HAB hab;
.
. /* Get character string (szClipString). */
.
if (WinOpenClipbrd(hab)) {
/* Allocate a shared memory object for the text data. */
if (!(fSuccess = DosAllocSharedMem(
(PVOID)&pszDest, /* Pointer to shared memory object */
NULL, /* Use unnamed shared memory */
strlen(szClipString)+1,/* Amount of memory to allocate */
PAG_WRITE | /* Allow write access */
PAG_COMMIT | /* Commit the shared memory */
OBJ_GIVEABLE))) { /* Make pointer giveable */
/* Set up the source pointer to point to text. */
pszSrc = szClipString;
/* Copy the string to the allocated memory. */
while (*pszDest++ = *pszSrc++);
/* Clear old data from the clipboard. */
WinEmptyClipbrd(hab);
/*
* Pass the pointer to the clipboard in CF_TEXT format. Notice
* that the pointer must be a ULONG value.
*/
fSuccess = WinSetClipbrdData(hab, /* Anchor-block handle */
(ULONG) pszDest, /* Pointer to text data */
CF_TEXT, /* Data is in text format */
CFI_POINTER); /* Passing a pointer */
/* Close the clipboard. */
WinCloseClipbrd(hab);
}
}
[Back: Using the Clipboard]
[Next: Retrieving Data from the Clipboard]