在CDC上绘图,将绘图保存为bmp,jpg,emf,tif,gif等常用文件格式
HBITMAP hBitmap = NULL;
RECT rect;
m_bmpShow.GetWindowRect(&rect);
// 获得活动窗体指针
//CWnd *pTarWnd = this->GetActiveWindow();
// 获取整个屏幕窗口指针
CWnd *pTarWnd = this->GetDesktopWindow();
// 获取WINDOWS窗口处于活动的窗口指针
//CWnd *pTarWnd = this->GetForegroundWindow();
// 获得活动窗体的设备上下文指针
CDC *pdc = pTarWnd->GetWindowDC();
//CDC *pdc = GetDC();
if(pdc)
{
//创建位图段
BITMAPINFO bmi;
LPBYTE pBits;
ZeroMemory(&bmi,sizeof(bmi));
CRect rcClient;
//GetClientRect(rcClient);
pTarWnd->GetWindowRect(&rcClient);
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = rcClient.Width();
bmi.bmiHeader.biHeight = rcClient.Height();
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 24;
bmi.bmiHeader.biCompression = BI_RGB;
hBitmap = CreateDIBSection( pdc->m_hDC,&bmi,DIB_RGB_COLORS,(void **)&pBits,0,0 );
//创建兼容dc并选择位图段
CDC dcMem;
dcMem.CreateCompatibleDC(pdc);
dcMem.SelectObject(hBitmap);
dcMem.BitBlt(0,0,rcClient.Width(),rcClient.Height(), pdc,0,0,SRCCOPY);
ReleaseDC( pdc );
}
if( hBitmap )
{
CImage img;
img.Attach(hBitmap);
img.Save(_T("f:\\1.bmp"));
img.Save(_T("f:\\1.jpg"));
//其它图片格式同理
DeleteObject(hBitmap);
AfxMessageBox(_T("OK!!"));
}