MFC如如实现类似画图工具里的画布
intCHDPaintPView::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CScrollView::OnCreate(lpC...
int CHDPaintPView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_tracker.m_rect.SetRect(0,0,GetDocument()->m_cavasW,GetDocument()->m_cavasH);
m_tracker.m_nStyle = CRectTracker::resizeOutside;
// 此外必须为指针,如果为变量程序会崩溃
m_drawView = new CHDPaintView();
if (!m_drawView->CreateEx(WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR,
AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,LoadCursor(NULL,IDC_CROSS),
(HBRUSH)GetStockObject(WHITE_BRUSH),NULL),
"",WS_CHILDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
m_tracker.m_rect.left,m_tracker.m_rect.top,
m_tracker.m_rect.right-1,m_tracker.m_rect.bottom-1,
this->m_hWnd,NULL))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_drawView->SetDocument((CHDPaintDoc*)m_pDocument);
m_drawView->ShowWindow(SW_NORMAL);
m_drawView->UpdateWindow();
SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(long)GetStockObject(GRAY_BRUSH));
return 0;
}
上面是网上找到的代码。
原来的作者是自己实现了一个类,用来实现画布,但我在自己的程序中用了他的代码,却没有效果。还是显示一大片空白的客户区,没能显示一个灰色背景的画布。
区别是,他的程序是一个单文档程序,我的是多文档的。我不清楚还需要在哪里修改?
程序是的ChildFrame、View、MainFrame中的哪一个?或者是Doc类。。
自己的程序中添加代码后无效果 展开
{
if (CScrollView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_tracker.m_rect.SetRect(0,0,GetDocument()->m_cavasW,GetDocument()->m_cavasH);
m_tracker.m_nStyle = CRectTracker::resizeOutside;
// 此外必须为指针,如果为变量程序会崩溃
m_drawView = new CHDPaintView();
if (!m_drawView->CreateEx(WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR,
AfxRegisterWndClass(CS_VREDRAW | CS_HREDRAW,LoadCursor(NULL,IDC_CROSS),
(HBRUSH)GetStockObject(WHITE_BRUSH),NULL),
"",WS_CHILDWINDOW | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
m_tracker.m_rect.left,m_tracker.m_rect.top,
m_tracker.m_rect.right-1,m_tracker.m_rect.bottom-1,
this->m_hWnd,NULL))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
m_drawView->SetDocument((CHDPaintDoc*)m_pDocument);
m_drawView->ShowWindow(SW_NORMAL);
m_drawView->UpdateWindow();
SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(long)GetStockObject(GRAY_BRUSH));
return 0;
}
上面是网上找到的代码。
原来的作者是自己实现了一个类,用来实现画布,但我在自己的程序中用了他的代码,却没有效果。还是显示一大片空白的客户区,没能显示一个灰色背景的画布。
区别是,他的程序是一个单文档程序,我的是多文档的。我不清楚还需要在哪里修改?
程序是的ChildFrame、View、MainFrame中的哪一个?或者是Doc类。。
自己的程序中添加代码后无效果 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询