VC 中的ondraw是如何被调用的?

ewwerpm ewwerpm 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
// CMyvsView 绘制

void CMyvsView::OnDraw(CDC* pDC)
{
CMyvsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;

// TODO: 在此处为本机数据添加绘制代码
if(state1==1)
{
CBitmap m_bitmap;
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,filename,IMAGE_BITMAP,
0,0,LR_CREATEDIBSECTION|LR_DEFAULTSIZE|LR_LOADFROMFILE);
m_bitmap.Attach (hBitmap);
CDC dcImage;
if(!dcImage.CreateCompatibleDC (pDC))
return;
BITMAP bm;
m_bitmap.GetBitmap (&bm);
dcImage.SelectObject (&m_bitmap);
pDC->BitBlt (0,0,bm.bmWidth ,bm.bmHeight ,&dcImage,0,0,SRCCOPY);
}
}


// CMyvsView 消息处理程序


void CMyvsView::OnYuantu()
{
// TODO: 在此添加命令处理程序代码
CMyvsDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
filename = pDoc->filename;
state1=1;
Invalidate();
}

简单的位图显示程序,消息处理函数OnYuantu中并没有直接调用ondraw,在ondraw的 调用层次结构中,搜索不到任何调研ondraw的方法,但程序执行没问题。并且会在ondraw方法内断下来。想问一下,ondraw是如何被调用的呢?OnPaint方法也没有直接调用。
void CFileView::OnPaint()
{
CPaintDC dc(this); // 用于绘制的设备上下文

CRect rectTree;
m_wndFileView.GetWindowRect(rectTree);
ScreenToClient(rectTree);

rectTree.InflateRect(1, 1);
dc.Draw3dRect(rectTree, ::GetSysColor(COLOR_3DSHADOW), ::GetSysColor(COLOR_3DSHADOW));
}
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
ewwerpm
VC/MFC 16,550 成员 421,606 内容