《〈〈按钮加背景色〉〉》帮忙
//改变按钮的背景色。
HBRUSH CRectWindow2View::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch (nCtlColor)
{
case CTLCOLOR_BTN:
{
CBrush Brush (RGB (128 , 0 , 128) );//你的颜色
CBrush* pOldBrush = pDC->SelectObject(&Brush);
pDC->SelectObject (pOldBrush );
}
return CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
}
///但编译通不过,提示错误:fatal error C1004: unexpected end of file found
问题点数:0、回复次数:16Top
1 楼Zark(金陵五月)回复于 2003-09-02 23:16:40 得分 0
唉!
少了一个}.
Top
2 楼wsshello(wsshello)回复于 2003-09-03 08:59:06 得分 0
没有啊Top
3 楼wsshello(wsshello)回复于 2003-09-03 16:11:51 得分 0
hiTop
4 楼lzwcom(梅花香自苦寒来)回复于 2003-09-03 16:28:55 得分 0
switch (nCtlColor)
{
case CTLCOLOR_BTN:
{
CBrush Brush (RGB (128 , 0 , 128) );//你的颜色
CBrush* pOldBrush = pDC->SelectObject(&Brush);
pDC->SelectObject (pOldBrush );
}
return CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
}----->>>>>少一个}Top
5 楼he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net)回复于 2003-09-03 16:30:48 得分 0
3个{
2个}Top
6 楼wsshello(wsshello)回复于 2003-09-03 17:25:11 得分 0
warning C4715: 'CRectWindow2View::OnCtlColor' : not all control paths return a value
显示错误在最后一个}处。
Top
7 楼wsshello(wsshello)回复于 2003-09-03 18:19:35 得分 0
HITop
8 楼fqyugu()回复于 2003-09-03 19:01:22 得分 0
没有返回值?Top
9 楼wsshello(wsshello)回复于 2003-09-03 19:40:10 得分 0
有啊。Top
10 楼wsshello(wsshello)回复于 2003-09-03 19:58:02 得分 0
HITop
11 楼wsshello(wsshello)回复于 2003-09-03 20:15:34 得分 0
WWTop
12 楼Zark(金陵五月)回复于 2003-09-03 23:12:28 得分 0
楼主还真够倔强.
改为:
HBRUSH CRectWindow2View::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch (nCtlColor)
{
case CTLCOLOR_BTN:
{
CBrush Brush (RGB (128 , 0 , 128) );//你的颜色
CBrush* pOldBrush = pDC->SelectObject(&Brush);
pDC->SelectObject (pOldBrush );
}
} //-这下子看清楚了吧,这个少一个"}",唉......
return CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
}
Top
13 楼wsshello(wsshello)回复于 2003-09-04 14:58:07 得分 0
我加了},但效果出不来。各位试过吗?Top
14 楼wsshello(wsshello)回复于 2003-09-04 16:18:01 得分 0
HITop
15 楼wsshello(wsshello)回复于 2003-09-04 20:01:38 得分 0
ddTop
16 楼Zark(金陵五月)回复于 2003-09-04 22:31:52 得分 0
一是一,二是二,前面你只是提问代码的编译问题,而不是运行问题.
关于运行问题:
1. 那个CBrush必须是类的成员变量,在类的构造函数中赋值.
2. 不要两次调用CFormView::OnCtlColor()函数.
3. 不要在CDC中选用自己的CBrush,而是要返回它.
HBRUSH CRectWindow2View::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
switch (nCtlColor)
{
case CTLCOLOR_BTN:
return m_hBrush; //自己定义的刷子.
}
return hbr;
}
Top




