📄 subject_23785.htm
字号:
<p>
序号:23785 发表者:王胜 发表日期:2002-12-06 14:18:52
<br>主题:在用OnCtlColor设置背景色时遇到的问题。请大家帮我解答。
<br>内容:我在设置对话框里的控件的背景色时遇到了一些颜色不能显示的问题。我发现若RGB(X,Y,Z)的x,y.z中若有一个为0时,背京色可以正常显示出来,否则他不能显示出来,不能显示的就以白色代替。<BR>各位帮我看看是什么原因???<BR>HBRUSH DIACOLOR::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <BR>{<BR>backcolor=RGB(255,255,255);<BR> forcolor=RGB(0,0,0);<BR> gridcolor=RGB(255,120,100);<BR> <BR> HBRUSH hbr= CDialog::OnCtlColor(pDC, pWnd, CTLCOLOR_EDIT&CTLCOLOR_MSGBOX ) ;<BR> // TODO: Change any attributes of the DC here<BR> CBrush brush,brush1,brush2;<BR> brush.CreateSolidBrush(forcolor);<BR> brush1.CreateSolidBrush(backcolor);<BR> brush2.CreateSolidBrush(gridcolor);<BR> int nID = pWnd->GetDlgCtrlID();<BR> if(nID == IDC_EDIT_FORCOLOR)<BR> {<BR> hbr = brush;<BR> }<BR> if(nID == IDC_EDIT_BACKCOLOR)<BR> {<BR> hbr = brush1;<BR> }<BR> if(nID == IDC_EDIT_GRIDCOLOR)<BR> {<BR> hbr = brush2;<BR> }<BR> // TODO: Return a different brush if the default is not desired<BR> return hbr;<BR>}<BR><BR>在用如下的方法在OnInitDialog里初始化刷新背景时根本不会响应。为什么????<BR> CWnd *pWnd=GetDlgItem(IDC_EDIT_FORCOLOR);<BR> CDC *pDC=pWnd->GetDC();<BR> CBrush br(forcolor);<BR> CRect rc;<BR> m_forcolor.GetClientRect(&rc);<BR> pDC->FillRect(rc,&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>
回复者:小年 回复日期:2002-12-06 14:49:04
<br>内容:CBrush brush,brush1,brush2;<BR> brush.CreateSolidBrush(forcolor);<BR> brush1.CreateSolidBrush(backcolor);<BR> brush2.CreateSolidBrush(gridcolor);<BR> int nID = pWnd->GetDlgCtrlID();<BR> if(nID == IDC_EDIT_FORCOLOR)<BR> {<BR> hbr = brush;<BR> }<BR> if(nID == IDC_EDIT_BACKCOLOR)<BR> {<BR> hbr = brush1;<BR> }<BR> if(nID == IDC_EDIT_GRIDCOLOR)<BR> {<BR> hbr = brush2;<BR> }<BR> // TODO: Return a different brush if the default is not desired<BR> return hbr;<BR><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>
回复者:王胜 回复日期:2002-12-07 12:56:09
<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>
回复者:小年 回复日期:2002-12-07 15:06:11
<br>内容:HBRUSH CDialogLOG::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) <BR>{<BR> HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);<BR> <BR> switch (nCtlColor)<BR> {<BR> //case CTLCOLOR_DLG:<BR> //ereturn (HBRUSH)brush.GetSafeHandle();<BR> case CTLCOLOR_EDIT:<BR> pDC->SetBkMode(TRANSPARENT);<BR> pDC->SetTextColor(RGB(0, 0, 255));<BR> return (HBRUSH)brush.GetSafeHandle();<BR> case CTLCOLOR_STATIC:<BR> pDC->SetBkMode(TRANSPARENT);<BR> pDC->SetTextColor(RGB(0, 0, 255));<BR> return (HBRUSH)brush.GetSafeHandle();<BR> case CTLCOLOR_LISTBOX:<BR> pDC->SetBkMode(TRANSPARENT);<BR> pDC->SetTextColor(RGB(0, 0, 255));<BR> return (HBRUSH)brush.GetSafeHandle();<BR> }<BR><BR> return hbr;<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>
回复者:王胜 回复日期:2002-12-08 14:56:19
<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>回复者:小年 回复日期:2002-12-08 18:19:21
<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 + -