⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_47946.htm

📁 vc
💻 HTM
字号:
<p>
序号:47946 发表者:huza 发表日期:2003-07-26 13:57:33
<br>主题:View中双缓冲问题,高分求教
<br>内容:小弟在View中设了个定时<BR>器,总是画圆,有时候感觉有点闪<BR>哪位高手能具体讲一下应该怎么办办。<BR>偶听说用双缓冲,可又不知道怎么弄~~继续晕~~<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:凯凯 回复日期:2003-07-26 14:25:46
<br>内容:就是搞一个内存DC,在上面画图,画完后一次性BITBLT到屏幕DC上。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:helptohelp 回复日期:2003-07-27 10:27:44
<br>内容:我也遇到了这个问题。<BR>凯凯,我想问你在内存画图时是在OnDraw()里画,还是自己定义一个函数呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:huza 回复日期:2003-07-27 15:01:51
<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>
回复者:huza 回复日期:2003-07-27 15:35:04
<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-07-28 03:57:28
<br>内容:....英文xp,中文粘过来就成这样了,将就看一下吧?<BR><BR>ps:怎么解决这样的毛病?<BR><BR><BR><BR>void CPaintView::OnDraw(CDC* pDC)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CPaintDoc* pDoc = GetDocument(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT_VALID(pDoc); <BR>&nbsp;&nbsp;&nbsp;&nbsp;CTypedPtrList&lt;CObList,CObject*&gt;&amp; itemList = pDoc-&gt;m_itemList;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC dc; <BR>&nbsp;&nbsp;&nbsp;&nbsp;CBitmap bitmap; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CBitmap* pOldBitmap; <BR>&nbsp;&nbsp;&nbsp;&nbsp;CRect client; <BR>&nbsp;&nbsp;&nbsp;&nbsp;CRect rect; <BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;GetClipBox(client);//&amp;frac14;ì&amp;Egrave;&amp;iexcl;&amp;Icirc;&amp;THORN;&amp;ETH;§&amp;Ccedil;&amp;oslash; <BR>&nbsp;&nbsp;&nbsp;&nbsp;GetClientRect(rect);//&amp;frac14;ì&amp;Egrave;&amp;iexcl;&amp;Otilde;&amp;ucirc;&amp;cedil;&amp;ouml;&amp;iquest;&amp;Iacute;&amp;raquo;§&amp;Ccedil;&amp;oslash; <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(dc.CreateCompatibleDC(pDC))//&amp;acute;&amp;acute;&amp;frac12;¨&amp;Ograve;&amp;raquo;&amp;cedil;&amp;ouml;&amp;Oacute;&amp;euml;pDC&amp;frac14;&amp;aelig;&amp;Egrave;&amp;Yacute;&amp;micro;&amp;Auml;&amp;Auml;&amp;Uacute;&amp;acute;&amp;aelig;&amp;Eacute;è±&amp;cedil;&amp;raquo;·&amp;frac34;&amp;sup3; <BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(bitmap.CreateCompatibleBitmap(pDC,rect.Width(), <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rect.Height()))//&amp;acute;&amp;acute;&amp;frac12;¨&amp;Ograve;&amp;raquo;&amp;Oacute;&amp;euml;pDC&amp;frac14;&amp;aelig;&amp;Egrave;&amp;Yacute;&amp;micro;&amp;Auml;&amp;Icirc;&amp;raquo;&amp;Iacute;&amp;frac14;&amp;pound;&amp;not;&amp;acute;ó&amp;ETH;&amp;iexcl;&amp;Icirc;&amp;ordf;&amp;Otilde;&amp;ucirc;&amp;cedil;&amp;ouml;&amp;iquest;&amp;Iacute;&amp;raquo;§&amp;Ccedil;&amp;oslash; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OnPrepareDC(&amp;dc,NULL);//&amp;Ecirc;&amp;sup1;dc&amp;Oacute;&amp;euml;pDC&amp;frac34;&amp;szlig;&amp;Oacute;&amp;ETH;&amp;Iacute;&amp;not;&amp;Ntilde;ù&amp;micro;&amp;Auml;&amp;Oacute;&amp;sup3;&amp;Eacute;&amp;auml;&amp;sup1;&amp;Oslash;&amp;Iuml;&amp;micro; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pOldBitmap=dc.SelectObject(&amp;bitmap);//&amp;frac12;&amp;laquo;&amp;Icirc;&amp;raquo;&amp;Iacute;&amp;frac14;&amp;Ntilde;&amp;iexcl;&amp;Egrave;&amp;euml;&amp;Auml;&amp;Uacute;&amp;acute;&amp;aelig;&amp;raquo;·&amp;frac34;&amp;sup3; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc.SelectClipRgn(NULL);//&amp;Ecirc;&amp;sup1;dc&amp;micro;&amp;Auml;&amp;Otilde;&amp;ucirc;&amp;cedil;&amp;ouml;&amp;iquest;&amp;Iacute;&amp;raquo;§&amp;Ccedil;&amp;oslash;&amp;para;&amp;frac14;&amp;sup3;&amp;Eacute;&amp;Icirc;&amp;THORN;&amp;ETH;§&amp;Ccedil;&amp;oslash; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dc.IntersectClipRect(client);//&amp;Ocirc;&amp;Ugrave;&amp;iexcl;°&amp;Oacute;&amp;euml;&amp;Eacute;&amp;Iuml;&amp;iexcl;±&amp;frac14;ì&amp;Egrave;&amp;iexcl;&amp;micro;&amp;Auml;&amp;Icirc;&amp;THORN;&amp;ETH;§&amp;Ccedil;&amp;oslash;&amp;pound;&amp;not;&amp;Ecirc;&amp;sup1; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&amp;Auml;&amp;Uacute;&amp;acute;&amp;aelig;&amp;raquo;·&amp;frac34;&amp;sup3;&amp;Oacute;&amp;euml;pDC&amp;frac14;ì&amp;Egrave;&amp;iexcl;&amp;micro;&amp;Auml;&amp;Icirc;&amp;THORN;&amp;ETH;§&amp;Ccedil;&amp;oslash;&amp;Iuml;à&amp;micro;&amp;Egrave; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;} <BR>&nbsp;&nbsp;&nbsp;&nbsp;CBrush brush; <BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!brush.CreateSolidBrush(RGB(255,255,255))) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;&nbsp;;<BR>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;brush.UnrealizeObject(); <BR>&nbsp;&nbsp;&nbsp;&nbsp;dc.FillRect(client,&amp;brush);//&amp;frac12;&amp;laquo;dc&amp;micro;&amp;Auml;×÷&amp;Iacute;&amp;frac14;&amp;Ccedil;&amp;oslash;&amp;Euml;&amp;cent;&amp;ETH;&amp;Acirc;&amp;sup3;&amp;Eacute;±&amp;sup3;&amp;frac34;°&amp;Eacute;&amp;laquo; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(itemList.GetCount()!=0) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Draw(&amp;dc);//&amp;frac12;&amp;laquo;&amp;Euml;ù&amp;Oacute;&amp;ETH;&amp;micro;&amp;Auml;&amp;raquo;&amp;shy;&amp;Iacute;&amp;frac14;&amp;para;&amp;Ocirc;&amp;Iuml;ó&amp;Ocirc;&amp;Uacute;&amp;Auml;&amp;Uacute;&amp;acute;&amp;aelig;&amp;sup2;&amp;Atilde;&amp;frac14;&amp;otilde;&amp;Ccedil;&amp;oslash;&amp;Auml;&amp;Uacute;&amp;Ouml;&amp;Oslash;&amp;raquo;&amp;shy; <BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;BitBlt(client.left,client.top,client.Width(),client.Height(), <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;dc,client.left,client.top,SRCCOPY);//&amp;frac12;&amp;laquo;&amp;Auml;&amp;Uacute;&amp;acute;&amp;aelig;&amp;sup2;&amp;Atilde;&amp;frac14;&amp;otilde;&amp;Ccedil;&amp;oslash;&amp;micro;&amp;Auml;&amp;Icirc;&amp;raquo;&amp;Iacute;&amp;frac14; <BR>&nbsp;&nbsp;&nbsp;&nbsp;//&amp;iquest;&amp;frac12;±&amp;acute;&amp;micro;&amp;frac12;&amp;acute;°&amp;iquest;&amp;Uacute;&amp;sup2;&amp;Atilde;&amp;frac14;&amp;otilde;&amp;Ccedil;&amp;oslash; <BR>&nbsp;&nbsp;&nbsp;&nbsp;dc.SelectObject(pOldBitmap); <BR><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>
回复者:huza 回复日期:2003-07-28 10:29:49
<br>内容:偶写了一个关于双缓冲的程序,可是屏幕显示空白<BR>大家帮忙看看,好么?多谢了。<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>
<font color=red>答案被接受</font><br>回复者:eric 回复日期:2003-07-28 10:55:46
<br>内容:CDC MemDC; //首先定义一个显示设备对象<BR>CBitmap MemBitmap;//定义一个位图对象<BR><BR>//随后建立与屏幕显示兼容的内存显示设备<BR>MemDC.CreateCompatibleDC(NULL);<BR>//这时还不能绘图,因为没有地方画 ^_^<BR>//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小<BR>MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);<BR><BR>//将位图选入到内存显示设备中<BR>//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上<BR>CBitmap *pOldBit=MemDC.SelectObject(&amp;MemBitmap);<BR><BR>//先用背景色将位图清除干净,这里我用的是白色作为背景<BR>//你也可以用自己应该用的颜色<BR>MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));<BR><BR>//绘图<BR>MemDC.MoveTo(……);<BR>MemDC.LineTo(……);<BR><BR>//将内存中的图拷贝到屏幕上进行显示<BR>pDC-&gt;BitBlt(0,0,nWidth,nHeight,&amp;MemDC,0,0,SRCCOPY);<BR><BR>//绘图完成后的清理<BR>MemBitmap.DeleteObject();<BR>MemDC.DeleteDC();<BR><BR>禁止系统擦掉原来的图象<BR>可以重载OnEraseBkgnd()函数,让其直接返回TRUE就可以了。如<BR>BOOL CMyWin::OnEraseBkgnd(CDC* pDC) <BR>{<BR>&nbsp;&nbsp; return TRUE;<BR>&nbsp;&nbsp; //return CWnd::OnEraseBkgnd(pDC);//把系统原来的这条语句注释掉。<BR>}<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>
回复者:huza 回复日期:2003-07-28 11:38:35
<br>内容:谢谢大家了,偶以前做的都是基于对话框的<BR>现在想弄一个演示实验,所以开始用SDI,结果遇到<BR>好多问题,多亏大家热心帮忙了,偶也要用偶知道的知识<BR>尽量多帮助大家才行。
<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 + -