Click here to Skip to main content
15,886,075 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more: , +
In my mfc application I have dialog box and a picture control(245,26,204,184) its id is IDC_pic.
My code is

SecondDlg.cpp
C++
void CSecondDlg::DoDataExchange(CDataExchange* pDX)
 {
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_pic, m_nHeight); //m_nHeight is CStatic object
}
void SecondDlg::OnBnClickedButton1()
{
	
	if(m_flag && m_hBmp)
	{
		capEditCopy(hMyWindow);
		OpenClipboard();
		m_hBmp = (HBITMAP)::GetClipboardData(CF_BITMAP);
		m_hBmp = (HBITMAP)::GetClipboardData(CF_BITMAP);
		m_nHeight.SetBitmap(m_hBmp); //here working fine
		BITMAP bm;
		GetObject(m_hBmp,sizeof(BITMAP),&bm);
		HDC TempHDC,TempHDC1;
		TempHDC1 = ::CreateCompatibleDC(NULL);
		SelectObject(TempHDC1,m_hBmp);
		CRect c1(245,26,24,14),c2(245,26,204,184);
		int rest=::StretchBlt(TempHDC1,550,157,50,50, TempHDC1, c2.left,c2.top,bm.bmWidth,bm.bmHeight, SRCCOPY ); 
		hOldBitmap2=CreateCompatibleBitmap(TempHDC1,204,184);
		GetObject(hOldBitmap2,sizeof(BITMAP),&bm);
		m_nHeight.SetBitmap(hOldBitmap2);
		DeleteDC(TempHDC);
 		CloseClipboard();		
	}
}

I have picture control(id is IDC_pic) on SecondDlg.
Now IDC_pic got black screen.
Posted
Updated 22-Nov-12 18:35pm
v5

1 solution

Hello,

Thats bcs after DoModal UI stuff of dialog are destroyed (in dialog you should receive WM_DESTROY)

Better to have HBITMAP variable separately in second dialog which you will do updating in overriden OnOK dialog method inside your second dialog. And on your method just call secong dialog for that value, without calling UI controls.

You may try to use Gdiplus instead of GDI for handling images and drawing.

Additionally, be sure taht your control with ID = 6 is created and it GetDlgCtrlID returns 6, but maybe better to keep variable for that static in class scope as you should be sure that object of static class you created is destroyed.

Regards,
Maxim.
 
Share this answer
 
Comments
Member 7909353 22-Nov-12 1:34am    
Thank you!
You are saying right.
Maxim Kartavenkov 22-Nov-12 1:40am    
Welcome

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900