打开按钮相应消息
void CLoadBmpDlg::OnBtnOpenBmp()
{
// TODO: Add your control notification handler code here
////选取图片文件
CFileDialog file_open_dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,"BMP Files(*.bmp)|*.bmp|All Files(*.*)|*.*||");
if(file_open_dlg.DoModal() != IDOK)
{
return;
}
m_pFilePath = file_open_dlg.GetPathName();
// ((CStatic*)GetDlgItem(IDC_STC_BMP))->SetBitmap(::LoadBitmap(AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_BITMAP)));
// HBITMAP hsource = (HBITMAP)LoadImage(AfxGetInstanceHandle(), m_pFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
// HBITMAP hbmp = ((CStatic*)GetDlgItem(IDC_STC_BMP))-> SetBitmap(hsource);
Invalidate( FALSE );
}
///OnPaint函数
void CLoadBmpDlg::OnPaint()
//////////////////////////////////////////////////////////////
CPaintDC bmpDC(GetDlgItem( IDC_STC_BMP ));
CBitmap SourceImage;
HBITMAP OldBitmap;
CDC mDC;
// SourceImage.LoadBitmap(image_name);
HANDLE filehandle = (HBITMAP)LoadImage( NULL, m_pFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
if ( filehandle != NULL )
BITMAP bmpInfo;
SourceImage.Attach( filehandle );
SourceImage.GetBitmap( &bmpInfo );
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(&bmpDC);
OldBitmap = (HBITMAP)dcCompatible.SelectObject(&SourceImage);
CRect rec;
((CStatic *)GetDlgItem(IDC_STC_BMP))->GetClientRect(&rec);
// dc.BitBlt(rec.left, rec.top, rec.Width(), rec.Height(), &dcCompatible, 0, 0, SRCCOPY);
int n = bmpDC.StretchBlt(rec.left, rec.top, rec.Width(), rec.Height(), &dcCompatible, rec.left, rec.top, bmpInfo.bmWidth, bmpInfo.bmHeight, SRCCOPY);
//
// CBrush brush;
// brush.CreatePatternBrush(&SourceImage);
// bmpDC.FillRect(rec, &brush);
// bmpDC.StretchBlt(rec.left, rec.top, rec.Width(), rec.Height(), &dcCompatible, rec.left, rec.top, bmpInfo.bmWidth, bmpInfo.bmHeight, SRCCOPY);
// brush.DeleteObject();
dcCompatible.SelectObject(&OldBitmap);
SourceImage.Detach();