MFC ハードコピ-を取り込むには

ハードコピ-の内容(この場合はBMPですが)をアプリケ-ションに取り込むにはどうすればいいのでしょうか又取り込んだ画像をアプリケ-ション画面に表示また印刷印刷はどの様にやれば行えるのか具体的(コ-ドを含め)に皆さんが応用できるように伝授します。


下記のアプリケ-ションを使用します

このアプリケ-ションを使います、本当はダウンロ-ド出来る様にしたいのですがワ-ドプレスが許可してくれない為に出来ないんです、このプロジェクトが必要ならばコメントを残すかメ-ルを頂ければこちらからメ-ルで連絡を取りこのプロジェクト取り差し上げます連絡して下さい。



上記画面の右側にスタティックBMP枠を配置します

処理としては適当な画面のハ-ドコピ-を実行し、それをこのアプリケ-ションの何かボタンが押された時にBMPヴォックス内に画像をロ-ドして表示して見ましょう、どの様にすればいいのか考えて見て下さい!勿論コ-ドも開示します、是非応用して貴方のアプリケ-ションに役立てて下さい。

赤枠の様に配置しました、処理は適当な画面をハ-ドコピ-してからButton1を押す事でピクチャ-ボックス内部にバッファにある画像を取り込みピクチャ-ボックスに貼り付けよう!と言うジョブです、結構色々な使い道が有ると思います、その後BMPファイルの保存まで行います、では始めましょう!



ハ-ドコピ-バッファからBMP画像を取得

下記のコ-ドは予めハ-ドコピ-された画像デ-タをピクチャ-ボックス(大きい赤枠内)であるスタティツク変数にBMPコ-ドをセットします。

下記のBMPを新しく作成します

リソ-スを開き新しくビットマップの項目を作りBMPを1個新しく作りますIDはIDB_BMPIMG(ダミ-となります)としています。大きさは自由に変更しても構いません。

初期化

上記で作成したIDB_BMPIMGを使い初期化します、ですが表示はしていません。


コ-ド実装

//============================================================
 //=================初期化が行われます=========================
 //============================================================
 void RightFormVew::OnInitialUpdate()
 {
     CFormView::OnInitialUpdate();    //これらの関数は必ず必要になります
     GetParentFrame()->RecalcLayout(); //これらの関数は必ず必要になります
     ResizeParentToFit();              //これらの関数は必ず必要になります    
     //============================================================
     //============================================================
     //============================================================
     HBITMAP hBitmap         ;
     m_pStatic =new CStatic();
     hBitmap   = ::LoadBitmap(AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_BMPIMG));
     m_pStatic->Create(TEXT("BMP"),WS_CHILD | WS_VISIBLE | SS_BITMAP | SS_CENTERIMAGE,CRect(0,0,574,30),this);
     m_pStatic->ShowWindow(SW_HIDE);
     m_pStatic->SetBitmap(hBitmap) ;

貼り付けボタンが押された時にバッファから取得してピクチャ-ボックスに貼り付けます。バッファは使用後に忘れずに閉じて下さい。

class RightFormVew : public CFormView
{
protected: // シリアル化からのみ作成します。
RightFormVew();
DECLARE_DYNCREATE(RightFormVew)

public:
enum{ IDD = IDD_RIGHT_Vew };

赤色の文字列はスタティックを使用する準備でヘッダ-ファイル内に記載してください。

CStatic* m_pStatic,*m_pStaticB;

下記のコ-ドはボタンが押された時にバッファからデ-タを取得してその取得したデ-タが静止画か文字列かを判定して予め準備した変数へ挿入しその後バッファを閉じています。

/////////////////////////////////////////////////////////////////////////////
////////////////////////ハ-ドコピ-読み出し/////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
void RightFormVew::OnBnClickedButton1()
{
CControlPracticeDoc* pDoc = GetDocument();

HANDLE hText     ;
HBITMAP hBitmap  ;
//=============================================================
CString val=_T(""),valC=_T("");
//=============================================================
OpenClipboard();
//=============================================================
if (IsClipboardFormatAvailable(CF_BITMAP)) {//こちらが画像のコピ-です
                  hBitmap = (HBITMAP)GetClipboardData(CF_BITMAP);
                  m_pStatic->SetBitmap(hBitmap);
                  EmptyClipboard()             ;
                  }
else {//こちらがテキストのコピ-です
            hText = GetClipboardData(CF_UNICODETEXT);
            if(hText == NULL) ;
            else    {
                    val.Format(_T("%s"), GlobalLock(hText));
                    GlobalUnlock(hText) ;
                    EmptyClipboard()    ;
                    }
            }
//=============================================================
CloseClipboard();
}

構造体とファイルアクセス          BMPファイルのアクセス     Vew切り替え機構説明(No1)

印刷機構を手動で組み込みます      リストコントロール初期化  MFC BMPイメージを保存するには