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

📄 subject_41424.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:41424 发表者:titany 发表日期:2003-05-27 00:04:32
<br>主题:UpdateWindow()让我迷惑(附代码)
<br>内容:void CEx06aDialog::OnPaint() <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;CPaintDC dc(this); // device context for painting<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;// TODO: Add your message handler code here<BR>&nbsp;&nbsp;&nbsp;&nbsp;CWnd* pWnd=GetDlgItem(IDC_1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CDC* pDC=(CDC*)pWnd-&gt;GetDC();<BR>&nbsp;&nbsp;&nbsp;&nbsp;CRect rect;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pWnd-&gt;GetClientRect(&amp;rect);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;SelectStockObject(BLACK_BRUSH);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;pWnd-&gt;UpdateWindow();<BR>&nbsp;&nbsp;&nbsp;&nbsp;//为什么要放在Rectangle的前面?我试过放在<BR>&nbsp;&nbsp;&nbsp;&nbsp;//该句后面的话静态控件就不显示绘制的内容了<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDC-&gt;Rectangle(&amp;rect); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pWnd-&gt;ReleaseDC(pDC);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;// Do not call CDialog::OnPaint() for painting messages<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:titany 回复日期:2003-05-27 11:21:42
<br>内容:somebody help me!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:titany 回复日期:2003-05-28 00:02:54
<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>
回复者:zojd1 回复日期:2003-05-28 01:02:05
<br>内容:看看这个不知对你有没有用:<BR>http://www.china-askpro.com/msg13/qa53.shtml
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mimibaby 回复日期:2003-05-28 12:22:06
<br>内容:pWnd-&gt;UpdateWindow();//是使你的窗口失效,<BR>所以放后面就不行了<BR>&nbsp;&nbsp;&nbsp;&nbsp;
<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-05-28 16:42:12
<br>内容:updatewindow是重画窗口用的,如果有需要画的区域会发出WM_PAINT消息,如果没有那么不会。<BR><BR>原因:<BR>在主对话框的OnPaint的结尾因为IDC_1控件的整个客户区是无效的所以会发出IDC_1控件的WM_PAINT消息, 那么会调用系统的默认方法画控件DefWindowProc(message, wParam, lParam);这样你原来画上去的东西会被覆盖掉,你在前面调用了updatewindow后使无效客户区变的有效,就不会再会发出IDC_1控件的WM_PAINT消息,也不会调用DefWindowProc(message, wParam, lParam)了,所以不会覆盖你画的内容了。<BR><BR>其实还有两种方法可以实现同样的效果<BR>1:拦截住IDC_1的WM_PAINT的消息,不让调用DefWindowProc<BR>LRESULT CMyStatic::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) <BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if( message == WM_PAINT || message == WM_ERASEBKGND || message==WM_NCPAINT)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;return CStatic::WindowProc(message, wParam, lParam);<BR>}<BR><BR>2:在主对话框的结尾使IDC_1的客户区有效<BR>CWnd* pWnd=GetDlgItem(IDC_1);<BR>CDC* pDC=(CDC*)pWnd-&gt;GetDC();<BR>CRect rect;<BR>pWnd-&gt;GetClientRect(&amp;rect);<BR>pDC-&gt;SelectStockObjectBLACK_BRUSH);<BR><BR>//pWnd-&gt;UpdateWindow();<BR>//为什么要放在Rectangle的前面?我试过放在<BR>//该句后面的话静态控件就不显示绘制的内容了<BR><BR>pDC-&gt;Rectangle(&amp;rect);<BR>pWnd-&gt;ReleaseDC(pDC);<BR>pWnd-&gt;ValidateRect(&amp;rect);<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>
回复者:幻瞳 回复日期:2003-05-28 18:44:19
<br>内容:请问楼上的大虾怎么看出来他的IDC_1控件的整个客户区是无效的?<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-05-29 00:05:07
<br>内容:你可以在WM_PAINT中看看要重画的区域,和什么时候到产生WM_PAINT消息。
<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 + -