当其他一些程序将延迟渲染的数据放入剪贴板时(通过调用 SetClipboardData(fmt, NULL)),我的剪贴板查看器将获得 WM_DRAWCLIPBOARD。
当我的查看器调用 GetClipboardData() 时,我的窗口过程被另一个 WM_DRAWCLIPBOARD 递归调用。
我找不到任何描述。
#define MY_CF CF_RIFF
LRESULT CALLBACK WindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
switch (uMsg) {
case WM_DRAWCLIPBOARD:
OpenClipboard(hwnd);
HGLOBAL hglob = GetClipboardData(MY_CF); // Sends recursive WM_DRAWCLIPBOARD
break;
default:
return DefWindowProc( hwnd,uMsg,wParam,lParam);
}
return 0;
}