掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ハードコピーしたビットマップを印刷するには? (ID:53213)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
クリップボードにコピーした画面の画像を再度読み込みビットマップのハンドル(HBITMAP)として保持している場合に、これを印刷するには?どのような処理の流れをたどればいいのでしょうか? 環境は、XP、VC++、MFCを使っていません。 (環境について、どのように表現すればよいのか、 よくわからないのですが、これでいいのでしょうか?) いろいろと、資料を検索していたら、なんだかこんがらがってしまいました。下記では、プリンターに印刷はできるのですが、仮想プリンターには表示されません。どなたか、ご教授いただけないでしょうか? よろしくお願いいたします。m(_ _)m /////////////////////////////////////////////////////////////////// HANDLE hPrinter = NULL; // プリンタ オブジェクトのハンドル HDC hdcPrn = NULL; // プリンタデバイス・ハンドル BOOL bError = FALSE; DOCINFO di; // プリンタの初期処理 if( InitPrinter( hInst ,hDlg, &hPrinter, &hdcPrn ) ) { return( -1 ); } /* 印刷開始 */ di.cbSize = sizeof(DOCINFO); di.lpszDocName = "Hard Copy";//(LPSTR)szMessage; di.lpszOutput = (LPSTR)NULL; di.lpszDatatype = (LPSTR)NULL; di.fwType = 0; if( StartDoc( hdcPrn, &di ) > 0 ) { StartPage(hdcPrn); int ret = 0 ; HBITMAP hBm; // 各モニタのビットマップのハンドル HDC pDC; HBITMAP hOldBitmap; // 各モニタのビットマップのハンドル RECT Prnrect ; BITMAP bmpBuf ; pDC = GetDC(NULL) ; ret = ClipboardRead(hDlg, &hBm);// クリップボードからBMPを読込む if (hBm){ // ビットマップオブジェクトの選択 ret = GetObject(hBm,sizeof(bmpBuf),&bmpBuf) ; hOldBitmap = (HBITMAP)SelectObject(pDC, hBm); if(GetClipBox(hdcPrn, &Prnrect)!=SIMPLEREGION){ //ERROR } // コピー元のpDCからコピー先のhdcPrnへビットブロック転送する ret = StretchBlt(hdcPrn, Prnrect.left, Prnrect.top, Prnrect.right-Prnrect.left, Prnrect.bottom-Prnrect.top, pDC, 0, 0, bmpBuf.bmWidth, bmpBuf.bmHeight, SRCCOPY); SelectObject(pDC, hOldBitmap); } //We're done... lets finish up EndPage(hdcPrn); EndDoc(hdcPrn); DeleteObject(hBm); } else bError = TRUE; // プリンタの終了処理 DeleteDC( hdcPrn ); // デバイスの削除 ClosePrinter( hPrinter );
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.