|
-
April 28th, 1999, 10:48 AM
#1
Bitmap Background in CFormView
Hello.
I Want to use bitmap background in CFormView.
Please Show me the way.
Bye.
-
April 30th, 1999, 02:09 PM
#2
Re: Bitmap Background in CFormView
Several methods will need to change. Here is an example:
These member variables will be needed:
int m_bitmapLeft;
int m_bitmapTop;
CBitmap m_bitmap;
void CFormcntlView::OnInitialUpdate()
{
CView::OnInitialUpdate();
int tmpNum;
int statusBarHeight=0;
// screen resolution
RECT tmpRec;
// window area minus task bar
SystemParametersInfo( SPI_GETWORKAREA, 0, &tmpRec, 0);
WINDOWPLACEMENT wndPlace;
wndPlace.length = sizeof(WINDOWPLACEMENT);
CMainFrame* pFrame = (CMainFrame*)GetParent();
pFrame->m_wndStatusBar.GetWindowPlacement(&wndPlace);
statusBarHeight = wndPlace.rcNormalPosition.bottom - wndPlace.rcNormalPosition.top;
// status bar positions not set yet
statusBarHeight = 18;
m_bitmap.LoadBitmap(IDB_MYBITMAPRESOURCE);
BITMAP bm;
m_bitmap.GetBitmap(&bm);
tmpNum = tmpRec.bottom - tmpRec.top;
// not sure why it needs to be times 3 but it works that way
tmpNum -= (statusBarHeight * 3);
if ( 0 > (tmpNum - bm.bmHeight))
{
m_bitmapTop = 0;
}
else
{
m_bitmapTop = (tmpNum - bm.bmHeight) / 2;
}
// width of bitmap
tmpNum = tmpRec.right - tmpRec.left;
if ( 0 > (tmpNum - bm.bmWidth))
{
m_bitmapLeft = 0;
}
else
{
m_bitmapLeft = (tmpNum - bm.bmWidth) / 2;
}
}
void CFormcntlView::OnDraw(CDC* pDC)
{
CFormcntlDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CDC dc;
dc.CreateCompatibleDC(pDC);
CBitmap* pBitmap = dc.SelectObject(&m_bitmap);
int xValue, yValue;
xValue = GetSystemMetrics(SM_CXSCREEN);
yValue = GetSystemMetrics(SM_CYSCREEN);
pDC->BitBlt(m_bitmapLeft, m_bitmapTop, xValue, yValue, &dc, 0, 0, SRCAND);
dc.SelectObject(pBitmap);
}
BOOL CFormcntlView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CRect clientRct;
pDC->GetClipBox(&clientRct);
RECT rct;
BITMAP bm;
m_bitmap.GetBitmap(&bm);
rct.left = m_bitmapLeft;
rct.top = m_bitmapTop;
rct.right = m_bitmapLeft + bm.bmWidth;
rct.bottom = m_bitmapTop + bm.bmHeight;
CBrush brushBack(RGB(192,192,192)); // Gray
CBrush* pOldBrush = pDC->SelectObject(&brushBack);
pDC->PatBlt(clientRct.left, clientRct.top, clientRct.Width(), clientRct.Height(), PATCOPY);
CBrush brushWhiteBack(RGB(255,255,255)); // White
CRgn bitmapRegion;
bitmapRegion.CreateRectRgnIndirect(&rct);
pDC->FillRgn(&bitmapRegion, &brushWhiteBack);
pDC->SelectObject(pOldBrush);
return(TRUE);
}
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|