/* MY_DATA_SIZE is presumed to be the amount of data to transfer */
do
status = XmClipboardCopy (dpy, window, item_id, "MY_DATA+STRUCT",
NULL, MY_DATA_SIZE, 0, &data_id); /* save the data_id! */
while (status == ClipboardLocked);
do
status = XmClipboardEndCopy (dpy, window, item_id);
while (status == ClipboardLocked);
Once the "MY_DATA_STRUCT" format has been registered with the server, we follow the standard procedure for
copying data to the clipboard. Here, we chose to use the copy−by−name method discussed earlier. Note that we save
the value of the data_id returned by XmClipboardCopy(). This value is used so that we may withdraw the data
later using XmClipboardWithdrawFormat() if necessary. Note that formats are never removed from the
clipboard; only data can be removed from the clipboard. Once a particular format is registered with the clipboard, it is
there until the server goes down. If you plan on retrieving data held by the clipboard, you may wish to inquire about
the format of the data it is holding. To do so, you must use two functions together:
XmClipboardInquireCount() and XmClipboardInquireFormat(). They take the following form:
int
XmClipboardInquireCount(display, window, count, max_length)
Display *display;
Window window;
int *count;
int *max_length;
int
XmClipboardInquireFormat(display, window, index,
format_name_buf, buffer_len, copied_len)
Display *display;
Window window;
int index;
char *format_name_buf;
unsigned long buffer_len;
unsigned long *copied_len;
XmClipboardInquireCount() ...