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