我是学SDK的,请问,我在资源中创建了一个对话框,在其上添加了一个静态文本控件,控件内有文本“XIAOTT”,然后按照对话框的尺寸插入显示一个位图,当对话框运行后,可以看到位图与静态文本,但静态文本的背景色为默认的灰色,而我的位图是我找的一个风水图片,我想问的是,如何将静态文本的背景色改为其无色(也就是透明),从而显现出位图的背景(声明:静态文本内容是动态改变的!,如果不是这样的话,我就可以直接把文本内容做在图片中了!)????????????

解决方案 »

  1.   

    得到到这个文字控件的DC,然后调有这个API。
    int SetBkMode( 
      HDC hdc,      // 控件窗口DC句柄
      int iBkMode   // 1是透明,0是不透明。
    );
    最后输出文字。
      

  2.   

    不行呵!!!!!!!!!IDC—EDIT1为此静态文本控件的标识!
    在这里我要改变静态文本的颜色,所以要这样用,当我调用了此函数后,背景为白色的!
    case WM_CTLCOLORSTATIC: 
    iStaticDC=GetWindowLong ((HWND) lParam, GWL_ID);

    if(iStaticDC ==IDC_EDIT1)
    {
    SetBkMode((HDC)wParam,1);//我在这里用,可是不用啊!
    SetBkColor((HDC)wParam,RGB(255,175,200));
    if(iEmail)SetTextColor((HDC)wParam,RGB(255,0,0));
    return (LRESULT)hBrushStatic;
    }
      

  3.   

    我的应用就是想在一个显示位图的对话框中,(位图用做对话框的背景)使其在对话框中的静态文本控件中的文本与位图的背景图案融为一体,也就是让文本透明!
    (总不能让我改变文本背景颜色吧,天知道与背景图案一致的颜色的RGB值!)
      

  4.   

    画出你的字体void CWnd::OnPaint()
    {
        CRect rect(x, x, x, x); //矩形的大小随你要显示的字体大小而定
        CFont ft;
        ft.Detach();
        ft.CreateFont(x - y, x - z, .......); //字体的创建随你显要显示的字体为准
        PAINTSTRUCT paint;
        CDC *pDC = BeginPaint(&paint);
        pDC->SelectObject(&ft);
        pDC->SetBKMode(TRANSPARENT); //不改变背景颜色
        pDC->DrawText("XXX", &rect, DT_CENTER); //画出字体
        EndPaint(&paint)
    }