16,472
社区成员
发帖
与我相关
我的任务
分享
BOOL DnFg;
CPoint DnPt;
int frx;
int fry;
void C**View::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();
CSize sizeTotal;
sizeTotal.cx = sizeTotal.cy = 1200;
SetScrollSizes(MM_TEXT, sizeTotal);
fry = 0;
frx = 0;
DnFg =FALSE;
DnPt = CPoint(0,0);
}
void C**View::OnLButtonDown(UINT nFlags, CPoint point)
{
DnFg = TRUE;DnPt = point;
CScrollView::OnLButtonDown(nFlags, point);
}
void C**View::OnLButtonUp(UINT nFlags, CPoint point)
{
DnFg = FALSE;
CScrollView::OnLButtonUp(nFlags, point);
}
void C**View::OnMouseMove(UINT nFlags, CPoint point)
{
if( DnFg == TRUE )
{
CDC *pdc=this->GetDC();
CDC MenDC;
CBitmap bm;
CRect rt;
GetClientRect(&rt);
MenDC.CreateCompatibleDC(pdc);
bm.CreateCompatibleBitmap(pdc,rt.Width(),rt.Height());
MenDC.SelectObject(&bm);
//-------------------------------------------------------------------
MenDC.FillSolidRect(0,0,rt.Width(),rt.Height(),RGB(255,255,255));
CBitmap bakeBitmap;bakeBitmap.LoadBitmap(IDB_BITMAP2);
CBitmap frntBitmap;frntBitmap.LoadBitmap(IDB_BITMAP1);
BITMAP bkbm; bakeBitmap.GetObject(sizeof(bkbm),&bkbm);
BITMAP frbm; frntBitmap.GetObject(sizeof(frbm),&frbm);
CDC inMDC; inMDC.CreateCompatibleDC(NULL);
inMDC.SelectObject( &bakeBitmap );
MenDC.BitBlt( 0,0,bkbm.bmWidth,bkbm.bmHeight,&inMDC,0,0,SRCCOPY);
inMDC.SelectObject( &frntBitmap );
CPoint mvPt;
mvPt.x = point.x - (DnPt.x - frx);
mvPt.y = point.y - (DnPt.y - fry);
MenDC.BitBlt( mvPt.x,mvPt.y,frbm.bmWidth,frbm.bmHeight,&inMDC,0,0,SRCCOPY);
//-------------------------------------------------------------------
pdc->BitBlt(0,0,rt.Width(),rt.Height(),&MenDC,0,0,SRCCOPY);
MenDC.DeleteDC();
bm.DeleteObject();
ReleaseDC(pdc);
}
CScrollView::OnMouseMove(nFlags, point);
}
void C**View::OnDraw(CDC* pDC)
{
CMSPrintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CBitmap bakeBitmap;bakeBitmap.LoadBitmap(IDB_BITMAP2);
CBitmap frntBitmap;frntBitmap.LoadBitmap(IDB_BITMAP1);
BITMAP bkbm; bakeBitmap.GetObject(sizeof(bkbm),&bkbm);
BITMAP frbm; frntBitmap.GetObject(sizeof(frbm),&frbm);
CDC inMDC; inMDC.CreateCompatibleDC(NULL);
inMDC.SelectObject( &bakeBitmap );
pDC->BitBlt( 0,0,bkbm.bmWidth,bkbm.bmHeight,&inMDC,0,0,SRCCOPY);
inMDC.SelectObject( &frntBitmap );
pDC->BitBlt( frx,fry,frbm.bmWidth,frbm.bmHeight,&inMDC,0,0,SRCCOPY);
}