📄 subject_33132.htm
字号:
<p>
序号:33132 发表者:vivivid 发表日期:2003-03-18 03:46:42
<br>主题:OnDraw(CDC* pDC)问题
<br>内容:OnDraw(CDC* pDC)函数的参数是怎么传递的<BR>这个CDC对象是在那里建立的?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:chd 回复日期:2003-03-18 08:31:48
<br>内容:guanzhu
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:萧七 回复日期:2003-03-18 09:47:42
<br>内容:这个参数么,<BR>WM_PAINT 会调用OnPaint(),而OnPaint()又会调用OnDraw(),<BR>所以,应该是在OnPaint()里建立的乐<BR>看看这个帖子:<BR>http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=32069&forum_id=
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lin 回复日期:2003-03-18 09:50:03
<br>内容:这个问题理论性好强,好难回答,胡乱说几句,如果不对,请指出!!!<BR><BR>概念一:MFC的封装<BR>MFC给编程带来了很大方便,主要是因为它封装了一大批函数、对象等,通过对函数或对象的我们实现很多功能。而OnDraw(CDC *pDC)是CView的一个虚函数,它在内部就封装了这样一个对象,以方便我们操作。<BR>打个比方:如果接触过SDK的话,知道每个程序都有一个WinMain函数,它是所有Win32程序的入口,而用MFC编程时,你却找不到这个函数,这不是因为没有这个函数,而是CWinApp类把这个函数封装了起来。<BR>概念二:window的消息机制<BR>根据window的消息机制,程序中每执行一步,都会使一些函数响应,当使用了Invalidate()等函数后,OnDraw()函数会自动响应,它就是受Window消息机制的控制。<BR><BR>总之,MFC封装了一个CDC对象,然后将之传出来(当然我们看不到它的定义)
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:萧七 回复日期:2003-03-18 10:04:05
<br>内容:youngbou兄,<BR>InvalidateRect()后,响应的是OnPaint()(对应消息WM_PAINT),然后OnPaint()再call<BR>OnDraw()得<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:iwill 回复日期:2003-03-18 10:21:10
<br>内容:学习一下sdk编程就知道,来自BeginPaint
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:微笑的撒旦 回复日期:2003-03-18 10:37:49
<br>内容:以CView来说,它是从CWnd继承过来的。CWnd给OnDraw函数传递(通过 OnPrepareDC)准备好的 CPaintDC。<BR>CPaintDC 对象将 Windows 的常见固定用语进行封装,调用 BeginPaint 函数,然后在设备上下文中绘制,最后调用 EndPaint 函数。CPaintDC继承自CDC,所以,CView::OnDraw中的CDC实际上是CPaintDC。它是从CWnd过来的,当然也是在那里建立的。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:山人 回复日期:2003-03-18 18:03:45
<br>内容:谢谢大家的回复 其实我就是想知道那个CDC对象是在那里建立的 然后传给ondraw()函数的 我明白了
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -