Windows上にて、C/C++のちょっとしたプログラムで、
実行結果を視覚的にみたい時に、直接デスクトップに描画すると手っ取り早い。
デスクトップはウィンドウハンドル(HWND)を持っているので、
あとはそれを元にデバイスコンテキストハンドル(HDC)を取得してやれば、
それを使って描画できる。
下の例は、再描画処理は行なっていないので、ウィンドウが重なると描画は消えてしまう。
あくまで、簡易的に描画結果を得る方法。
// DrawOnDesktop.cpp // デスクトップに直接描画 // 以下の#pragma非対応のコンパイラの場合、手動でライブラリをリンクすること #pragma comment(lib, "user32.lib") // GetDesktopWindow, GetDC, ReleaseDC API #pragma comment(lib, "gdi32.lib") // 各種描画API #include <windows.h> int main(int argc, char* argv[]) { // デスクトップのウィンドウハンドル、 // デバイスコンテキストハンドル取得 HWND desktop_hwnd = GetDesktopWindow(); HDC desktop_hdc = GetDC(desktop_hwnd); // // 描画処理 // SelectObject(desktop_hdc, GetStockObject(BLACK_PEN)); char message[] = "Hello, World"; TextOut(desktop_hdc, 150, 150, message, strlen(message)); HPEN hpen = CreatePen(PS_SOLID, 1, RGB(0, 0, 0)); HBRUSH hbrush = CreateSolidBrush(RGB(0, 255, 127)); HPEN oldpen = (HPEN)SelectObject(desktop_hdc, (HGDIOBJ*)hpen); HBRUSH oldbrush = (HBRUSH)SelectObject(desktop_hdc, (HGDIOBJ*)hbrush); Rectangle(desktop_hdc, 200, 200, 300, 300); SelectObject(desktop_hdc, oldpen); SelectObject(desktop_hdc, oldbrush); DeleteObject(hpen); DeleteObject(hbrush); // デバイスコンテキストハンドル開放 ReleaseDC(desktop_hwnd, desktop_hdc); return 0; }