WiseAlex
Софтовых дел М... | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору VitaliyB вот грубый вариант //class CClientView:CView int maxX,maxY; void CClientView::OnInitialUpdate() { static bool Initialized=false; if (!Initialized) { CView::OnInitialUpdate(); maxX=GetSystemMetrics(SM_CXSCREEN); maxY=GetSystemMetrics(SM_CYSCREEN); CClientDC dc(this); memDC.CreateCompatibleDC(&dc); memDC.SetBkMode(TRANSPARENT); //potential problem if the user change screen resolution to a bigger value bmp.CreateCompatibleBitmap(&dc,maxX,maxY); memDC.SelectObject(&bmp); Initialized=true; }; Invalidate(); } void CClientView::OnDraw(CDC* pDC) { CStrimClientDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); RECT clientRect; GetClientRect(&clientRect); // only paint the rect that needs repainting myDrawFunction(&memDC);//draw what you need CRect rect; memDC.GetClipBox(&rect); // copy the area needed. pDC->BitBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY); } BOOL CClientView::OnEraseBkgnd(CDC* pDC) { return TRUE;Simulate erasing } идея в создании буферного битмапа и рисовании в него - а затем копирование на экран здесь создается битмап на весь экран - можно создать только для своего куска и еще (может и не по теме) есть CRectTracker - он делает всякие перемещения, но только без отображения содержимого при перетаскивании |