Processing the WM_RENDERFORMAT and WM_RENDERALLFORMATS Messages

If a window passes a NULL handle to the SetClipboardData function, it must process the WM_RENDERFORMAT and WM_RENDERALLFORMATS messages to render data upon request.

If the WM_RENDERFORMAT message delayed rendering a specific format and an application requested data in that format, the message is sent to the clipboard owner. If the WM_RENDERFORMAT message has delayed rendering one or more formats, the message is sent to the clipboard owner before it is destroyed.

To render a clipboard format, the window procedure must place a data handle on the clipboard by using the SetClipboardData function. It must not open the clipboard before calling SetClipboardData.

The Label application processes the WM_RENDERFORMAT and WM_RENDERALLFORMATS messages as follows.

case WM_RENDERFORMAT:

RenderFormat((UINT) wParam);

break;

case WM_RENDERALLFORMATS:

RenderFormat(uLabelFormat);

RenderFormat(CF_TEXT);

break;

In both cases, the window procedure calls the application-defined RenderFormat function, defined as follows.

  • oid WINAPI RenderFormat(UINT uFormat)

{

HGLOBAL hglb;

PLABELBOX pbox;

LPTSTR lptstr;

int cch;

if (pboxLocalClip == NULL)

return;

if (uFormat == CF_TEXT)

{

// Allocate a buffer for the text.

cch = pboxLocalClip->cchLabel;

hglb = GlobalAlloc(GMEM_DDESHARE,

(cch + 1) * sizeof(TCHAR));

if (hglb == NULL)

return;

// Copy the text from pboxLocalClip.

lptstr = GlobalLock(hglb);

memcpy(lptstr, pboxLocalClip->atchLabel,

cch * sizeof(TCHAR));

lptstr[cch] = (TCHAR) 0;

GlobalUnlock(hglb);

// Place the handle on the clipboard.

SetClipboardData(CF_TEXT, hglb);

}

else if (uFormat == uLabelFormat)

{

hglb = GlobalAlloc(GMEM_DDESHARE, sizeof(LABELBOX));

if (hglb == NULL)

return;

pbox = GlobalLock(hglb);

memcpy(pbox, pboxLocalClip, sizeof(LABELBOX));

GlobalUnlock(hglb);

SetClipboardData(uLabelFormat, hglb);

}

}

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database