他のプログラムが (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;
}