📄 subject_43613.htm
字号:
<p>
序号:43613 发表者:hulala 发表日期:2003-06-12 15:26:10
<br>主题:请教各位的大虾:在对话框里放了一个静态控件,我要改变背景颜色,并画一些曲线,但是遇到问题,请指教一下。
<br>内容:在onpaint()中:<BR> CStatic *lpStatic=(CStatic*)GetDlgItem(IDC_STATIC_DRAW);<BR> CDC *lpdc=lpStatic->GetDC();<BR> lpdc->SetBkColor(RGB(255,255,255));<BR>×××××××这里没效果,对话框的静态控件部分还是灰的;××××××<BR><BR> 请大虾帮助!<BR><BR>下面画线,但是画了一大圈,只有静态控件外有蓝线,里面画不上。<BR> CPoint pointX(0,0);<BR> CPoint pointY(400,400);<BR> CPen newPen(PS_SOLID, 1, RGB(0,0,255)); //蓝色<BR> CPen* pOldPen=lpdc->SelectObject(&newPen);<BR> lpdc->MoveTo(pointX);//移到x的参考点;<BR> lpdc->LineTo(pointX.x,pointX.y+5);//向上画线<BR> lpdc->LineTo(pointY);<BR> lpdc->Rectangle(0,0,55,55);<BR> lpdc->MoveTo(0,0);<BR> lpdc->LineTo(25,25);<BR> lpdc->SelectObject(pOldPen);<BR> newPen.DeleteObject();//这一部分确定;<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:极点 回复日期:2003-06-12 17:12:27
<br>内容:由于Dialog的OnPaint()调用结束时调用了CStatic缺省的OnPaint(),<BR>使得你的绘制操作在超出Dialog::OnPaint()后被CStatic::OnPaint()覆盖了,<BR>建议自己派生一个CStatic类如CMyStaitc,<BR>创建一个共有函数如void Paint()用于进行你需要的绘制,<BR>( 最好也重载CStatic的OnPaint()函数 )<BR>在你要绘制的静态控件的声明的地方改为<BR> CMyStatic *lpStatic=(CMyStatic *)GetDlgItem(IDC_STATIC_DRAW);<BR>在CDialog的其他地方(不要在CDialog::OnPaint())调用CMyStaticPaint()可以得到效果.
<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 + -