LoadBitmap in rectangle
-
i am having problem in loading a bitmap in a rectangle contained in a dialogbox. anybody having idea what to do or any sample code
I generally make a CStatic box with a border and then create a new class which is a child of CStatic. For example, class CBitmapViewBox : public CStatic I add a member variable of type CBitmapViewBox to my main dialog and, in the OnInitDialog() event, I do this...
m_BitmapViewBox.SubclassDlgItem(IDC_SBITMAPDISPLAY, this); m_BitmapViewBox.Init();
To load and display the bitmap, I do this...void CBitmapViewBox::OnPaint() { CPaintDC dc(this); // device context for painting CMainViewDlg *pWnd = (CMainViewDlg *)GetParent(); if(pWnd != NULL) { if(m_bValid) { CRect lRect; GetClientRect(lRect); lRect.NormalizeRect(); BITMAP bm; m_BMP.GetBitmap(&bm); CBitmap *pOldBitmap = dcMem.SelectObject(&m_BMP); dc.BitBlt(0, 0, lRect.Width(), lRect.Height(), &dcMem, 0, 0, SRCCOPY); dc.SelectObject(pOldBitmap); } else { dc.DrawText("Not a valid BMP file", -1, lRect, DT_CENTER | DT_VCENTER | DT_WORDBREAK); } } CStatic::OnPaint(); } BOOL CBitmapViewBox::UpdateBMP(LPCTSTR lpszName) { CMainViewDlg *pFrameWnd = (CMainViewDlg *)GetParent(); HBITMAP hBitmap = (HBITMAP) ::LoadImage(AfxGetInstanceHandle(), lpszName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION); m_bValid = TRUE; // Get rid of other bitmap if(m_BMP.DeleteObject()) m_BMP.Detach(); if(!hBitmap) { m_bValid = FALSE; UpdateSize(m_iMaxWidth, m_iMaxHeight); Invalidate(TRUE); return FALSE; } m_bValid = TRUE; m_BMP.Attach(hBitmap); }