VC 中的ondraw是如何被调用的?
// 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));
}
...全文
相关推荐
vc学习、技巧
关于vc的使用和学习技巧
C语言指针函数MFC版Demo
C语言指针函数;
VC6.0下用MFC在窗口客户区绘制固定文本的最小可运行示例
直接打开就能编译运行的VC6.0 MFC工程,主窗口空白区域稳定显示一行静态文字,不依赖第三方库或额外配置。包含完整.dsw工程文件、.dsp项目文件、C++源码(demo.cpp、demoView.cpp等)、头文件(demo.h、demoView.h等)、资源文件(图标、位图、RC脚本)以及Debug目录下的编译产物(.exe、.pdb、.ilk等)。所有代码基于VC6向导生成框架精简,保留CWinApp应用类、CFrameWnd主框架、CView视图类和CDocument文档类的基本协作关系,重点展示
VC重绘如何防止控件闪烁
VC重绘如何防止控件闪烁 VC重绘如何防止控件闪烁 VC重绘如何防止控件闪烁
vc中常见的108个问题
很有用的东东,帮你解决你在vc编程过程中遇到的一些问题,相信会从中学到东西


