クリップボードの画像を描画

クリップボードに格納されている画像を描画します。
プログラムを実行する前に PrintScreen キーなどでクリップボードに画像を取り込んでおいて下さい。
新たに PrintScreen キーでクリップボードを更新したときはメニューから「最新表示」を選んで下さい。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プロジェクトの設定

  1. 次のメニューを作成して下さい。
    ポップアップメニューを使わないときは、メニューのプロパティから pop を FALSE に設定して下さい。
    メニュー "MYMENU"
    ファイル(&F)
    終了(&X) IDM_END
    最新表示(&R) IDM_REDRAW
  2. クリップボードから画像を描画する方法は、基本的には BMP ファイルから描画する場合と変わりません。
    ファイルと違うところは Clipboard を調べて GetClipboardData() でイメージを取得することです。
    WM_PAINT: でクリップボードから画像を取得して描画するソースコードです。
        HDC         hdc, hdc_mem;
        PAINTSTRUCT ps;
        HBITMAP     hBitmap;
        BITMAP      bm;
    
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            if (IsClipboardFormatAvailable(CF_BITMAP))
            {   OpenClipboard(hWnd);
                hBitmap = (HBITMAP)GetClipboardData(CF_BITMAP);
                hdc_mem = CreateCompatibleDC(hdc);
                SelectObject(hdc_mem, hBitmap);
                GetObject(hBitmap, sizeof(BITMAP), (LPSTR)&bm);
                BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,hdc_mem,0,0,SRCCOPY);
                DeleteDC(hdc_mem);
                CloseClipboard();
            }
            EndPaint(hWnd, &ps);
            break;
        
  3. メニュー選択で IDM_REDRAW: が選ばれたとき、InvalidateRect() で画面を再描画します。
        case IDM_REDRAW:
            InvalidateRect(hWnd, NULL, TRUE);
            break;
        
  4. WM_CLOSE: ではプログラムの終了確認を行っています。
        int     id;
        case WM_CLOSE:
            id = MessageBox(hWnd, (LPCSTR)"終了してもよいですか",
                 (LPCSTR)"終了確認", MB_YESNO | MB_ICONQUESTION);
            if (id == IDYES)
            {   DestroyWindow(hWnd);  }
            break;
        
  5. ウインドウにメニューを設定します。
        WNDCLASS wc = { CS_CLASSDC,WndProc,0L,0L,hInstance,NULL,LoadCursor(NULL,IDC_ARROW),
                        (HBRUSH)GetStockObject(WHITE_BRUSH),"MYMENU",NAME };
        
  6. C# でも同様のプログラムを作成しています。
    Clipboard Image を参照して下さい。
    クリップボードを使わないで Capture したイメージをファイルに保存するプログラムは Screen Capture を参照して下さい。

超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード

超初心者のプログラム入門(Win32API C++)