下記のコ-ドはピクチャ-ボックスの内容で現在の表示中画像を取り出してFileNameで保存します。
ピクチャ-ボックスの内容をBMP型式で保存
/////////////////////////////////////////////////////////////////////////////
//////////////////////// ビットマップ保存ボタン ///////////////////////
/////////////////////////////////////////////////////////////////////////////
void RightFormVew::OnBnClickedButton2()
{
BitmapToFilaeSave(_T(“TEST_BMP_FILE”));
}
/////////////////////////////////////////////////////////////////////////////
////////////////////////////// BMP保存コ-ド ///////////////////////////
/////////////////////////////////////////////////////////////////////////////
void RightFormVew::BitmapToFilaeSave(CString FileName)
{
CControlPracticeDoc* pDoc = GetDocument();
//==============================================================
HBITMAP hBitmap,hBitmapPrev;
BITMAPINFO *pbmi;
void *pbits;
HANDLE hfile;
//==============================================================
HDC hDC ;
HDC hDCCompat;
//==============================================================
DWORD temp;
BITMAPFILEHEADER bmfh;
HWND hWnd=RightFormVew::m_hWnd;
hDC=::GetDC(hWnd);
//==============================================================
CString fNam=FileName+_T("bmp");
hBitmap=m_pStatic->GetBitmap() ;
//==============================================================
CRect rect,rectB;
GetWindowRect(rectB) ;
m_pStaticB->GetWindowRect(rect);
//==============================================================
int ty=rect.top-rectB.top ;
int tx=rect.left-rectB.left;
rect.top=ty ;rect.bottom=rect.top+128;
rect.left=tx;rect.right=rect.left+128;
int wih=rect.Width();
//==============================================================
pbmi=(BITMAPINFO*)new BYTE[sizeof(BITMAPINFO)] ;
ZeroMemory(&pbmi->bmiHeader,sizeof(pbmi->bmiHeader));
pbmi->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
pbmi->bmiHeader.biWidth =rect.Width() ;
pbmi->bmiHeader.biHeight=rect.Height();
pbmi->bmiHeader.biBitCount=GetDeviceCaps(hDC,BITSPIXEL);
pbmi->bmiHeader.biPlanes=1;
pbmi->bmiHeader.biSizeImage=(((pbmi->bmiHeader.biWidth*pbmi->bmiHeader.biBitCount+31)>>3)
& 0xfffffffc)*pbmi->bmiHeader.biHeight;
//==============================================================
hBitmap=CreateDIBSection(hDC,pbmi,DIB_RGB_COLORS,&pbits,NULL,0);
hDCCompat=CreateCompatibleDC(hDC);
hBitmapPrev=(HBITMAP)SelectObject(hDCCompat,hBitmap);
BitBlt(hDCCompat,0,0,pbmi->bmiHeader.biWidth,pbmi->bmiHeader.biHeight,hDC,rect.left,rect.top,SRCCOPY);
//==============================================================
bmfh.bfType=0x4d42;
bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
bmfh.bfSize=bmfh.bfOffBits+pbmi->bmiHeader.biSizeImage;
//==============================================================
hfile=CreateFile(fNam,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,0,NULL);
//==============================================================
WriteFile(hfile,&bmfh,sizeof(bmfh),&temp,NULL);
WriteFile(hfile,&pbmi->bmiHeader,sizeof(pbmi->bmiHeader),&temp,NULL);
SetFilePointer(hfile,bmfh.bfOffBits,NULL,FILE_BEGIN);
WriteFile(hfile,pbits,pbmi->bmiHeader.biSizeImage,&temp,NULL);
//==============================================================
CloseHandle(hfile) ;
delete[] (BYTE*)pbmi;
//==============================================================
}
MFC BMPイメージを保存するには MFC ハードコピ-を取り込むには BMPファイルのアクセス