哪位高手教我用一下private device context,MSDN里有说明,
主要作用是开辟全局的DC,以后使用时不用每次都要调用GetDC(),
也不用释放DC.它关键是要将Window类型设置为CS_OWNDC我的做法是这样的,但好像没这种效果,请指教
BOOL CPdcView::PreCreateWindow(CREATESTRUCT& cs)
{
cs.dwExStyle = WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_OWNDC,
::LoadCursor(NULL,IDC_ARROW),HBRUSH(COLOR_HIGHLIGHT+1),NULL);
return CView::PreCreateWindow(cs);
}
int CPdcView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
p=GetDC();
return 0;
}
void CPdcView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
p->MoveTo(100,100);
p->LineTo(200,200);
CView::OnRButtonDown(nFlags, point);
}
主要作用是开辟全局的DC,以后使用时不用每次都要调用GetDC(),
也不用释放DC.它关键是要将Window类型设置为CS_OWNDC我的做法是这样的,但好像没这种效果,请指教
BOOL CPdcView::PreCreateWindow(CREATESTRUCT& cs)
{
cs.dwExStyle = WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS|CS_OWNDC,
::LoadCursor(NULL,IDC_ARROW),HBRUSH(COLOR_HIGHLIGHT+1),NULL);
return CView::PreCreateWindow(cs);
}
int CPdcView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
p=GetDC();
return 0;
}
void CPdcView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
p->MoveTo(100,100);
p->LineTo(200,200);
CView::OnRButtonDown(nFlags, point);
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货