再度書きなおしました。
なぜか再描画がされないときもありますが、だいぶちゃんと動くようになりました。
こんな感じでいいのかなあ・・・。ありがとうございました。

static HWND hWndDesktop;//デスクトップのHWND
HDC hDCDesktop;//デスクトップのHDC
HDC hDC;//コピー先のHDC
PAINTSTRUCT psDesktop, ps;//BeginPaintのために宣言(使用しない?)

switch(message)
{
case WM_CREATE:
hWndDesktop=GetDesktopWindow();
case WM_PAINT:
hDCDesktop = BeginPaint(hWndDesktop, &psDesktop);
hDC = BeginPaint(hWnd, &ps);
BitBlt(hDC, 0, 0, 100, 100, hDCDesktop, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);
EndPaint(hWndDesktop, &psDesktop);
return 0;