Click here to Skip to main content
15,896,912 members

how to get resize bitmap image using stretchblt

Revision 3
In my mfc application I have two dialog.
My code is
FirstDlg.cpp
C++
void CFirstDlg::CapturePhoto()
{
	HDC         hDC, hMemDC,destinationDC;
	HWND wnd,wnd1; 
	CSecondDlg dlgWin2; 
	if(IDOK==dlgWin2.DoModal())
	{
((CStatic*)m_cTab.GetDlgItem(6))->SetBitmap(dlgWin2.m_hBmp)
		DeleteObject(dlgWin2.m_hBmp);
	}
}


SecondDlg.h
C++
public:
	HBITMAP m_hBmp; //handle to bitmap
	CSecondDlg(CWnd* pParent = NULL);   // standard constructor
	CStatic  m_nHeight;

SecondDlg.cpp
C++
void CSecondDlg::DoDataExchange(CDataExchange* pDX)
 {
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_pic, m_nHeight);
}
void SecondDlg::OnBnClickedButton1()
{
	
	if(m_flag && m_hBmp)
	{
		capEditCopy(hMyWindow);
		OpenClipboard();
		m_hBmp = (HBITMAP)::GetClipboardData(CF_BITMAP);
		BITMAP bm;
		GetObject(m_hBmp,sizeof(BITMAP),&bm);
		HDC TempHDC;
		TempHDC = ::CreateCompatibleDC(NULL);
		hOldBitmap2 = (HBITMAP)SelectObject(TempHDC,m_hBmp);
		::StretchBlt(TempHDC,245,26, 50, 50, TempHDC,  245,26, bm.bmWidth,bm.bmHeight, SRCCOPY ); 
		SelectObject(TempHDC,hOldBitmap2);
		hOldBitmap2=CreateCompatibleBitmap(TempHDC, 50, 50);
		m_nHeight.SetBitmap(hOldBitmap2);
		m_hBmp=hOldBitmap2;
		DeleteDC(TempHDC);
		/*HWND b=(HWND)GetDlgItem(IDC_pic);
		HDC hDC=::GetDC(b);//
		HDC hMemDC = CreateCompatibleDC(hDC);
		HGDIOBJ j= SelectObject(hMemDC,m_hBmp);
		CRect c1(145,26,24,14),c2(245,26,204,184);
		int res=StretchBlt(hDC,c1.left,c1.top,(c1.right-c1.left),(c1.bottom-c1.top),hMemDC,c2.left,c2.top,(c2.right-c2.left),(c2.bottom-c2.top),SRCCOPY);
		HBITMAP abcd=CreateCompatibleBitmap(hDC, 60, 60);
		m_nHeight.SetBitmap(abcd);
		DeleteDC(hMemDC);*/
 		CloseClipboard();		
	}
}

I have picture control(id is IDC_pic) on SecondDlg.
Now IDC_pic got black screen.
Posted 21-Nov-12 18:19pm by Member 7909353.