加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 静态文本颜色

发布时间:2020-12-16 07:32:51 所属栏目:百科 来源:网络整理
导读:我编写了以下代码,它将颜色应用于一个窗口中的所有静态文本,但是 我想在一个窗口中应用两种不同的颜色,如ID:1234,其中ID是另一种颜色,1234在一个窗口中将是不同的颜色.我怎样才能做到这一点?这就是我所做的: case WM_CTLCOLORSTATIC: SetBkColor( hdc,COL
我编写了以下代码,它将颜色应用于一个窗口中的所有静态文本,但是
我想在一个窗口中应用两种不同的颜色,如ID:1234,其中ID是另一种颜色,1234在一个窗口中将是不同的颜色.我怎样才能做到这一点?这就是我所做的:

case WM_CTLCOLORSTATIC:

    SetBkColor( hdc,COLORREF( :: GetSysColor( COLOR_3DFACE) ) );    
    //sets bckcolor of static text same as window color

    if ( ( HWND ) lParam == GetDlgItem( hWnd,IDC_PID) ) 
    {
    SetTextColor( ( HDC ) wParam,RGB( 250,50,200));
    return ( BOOL ) CreateSolidBrush ( GetSysColor( COLOR_3DFACE) );
    }

    break;

解决方法

我不确定我理解你的问题.你的代码看起来非常好.值得注意的一点是,您负责清理分配的资源.使用上面的代码,您将泄漏通过调用CreateSolidBrush创建的HBRUSH对象.由于您不需要自定义画笔,因此您应该使用 GetSysColorBrush.

作为一个品味问题,我将使用GetDlgCtrlID过滤控件ID而不是其窗口句柄.结合更改,您的代码应如下所示:

case WM_CTLCOLORSTATIC:
    switch ( GetDlgCtrlID( (HWND)lParam ) )
    {
    case IDC_PID:
        //sets bckcolor of static text same as window color
        SetBkColor( (HDC)wParam,COLORREF( GetSysColor( COLOR_3DFACE ) ) );    
        SetTextColor( (HDC)wParam,200) );
        return (INT_PTR)GetSysColorBrush( COLOR_3DFACE );

    default:
        // Message wasn't handled -> pass it on to the default handler
        return 0;
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读