steuerelement static Text Transparent auf einem Bitmap anzeigen?



  • Hallo leute

    wie kann man ein Text Control auf BitMap Transparent anzeigen unter Text control Eigenschaften Transparent = true funktioniert es nicht
    Der Text hintergrund wird mit angezeigt. ich hätte gern das nur der Text angezeigt wird. wie macht man so was...
    kennt sich jemand damit aus oder eine idee..
    ich hab eine Mfc Dialog anwendung.
    Das Bitmap soll als hintergrund für dialog dienen.

    Grüße Can



  • Och das ist ganz einfach 🙂 Ich geb dir mal nen Tipp... du musst die OnCtlColor überschreiben ... ach egal... hier mal die fertige Lösung 😉

    HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
        HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    
        if(nCtlColor == CTLCOLOR_STATIC)
        {
            pDC->SetBkMode(TRANSPARENT);
            return (HBRUSH)GetStockObject(NULL_BRUSH);
        }
        return hbr;
    }
    


  • Danke Evil
    Funktioniert super dein code.. 👍

    Ich wollte die schrifft größe ändern wenn ich das tue dann ist der Text nicht mehr Transparent.

    Habe eine funktion für schrifft größe geschrieben die von OnInitDialog() aufgerufen wird.

    void CBmpFond2Dlg:: FondInit()
    {
    ////// f.k Fonds
    CFont myFont;
    int nHeight=26;
    int nWidth=9;
    int nWeight=10;
    bool bUnderline=false;
    bool bItalic=true;
    bool bStrikeOut=false;
    myFont.CreateFont(nHeight,nWidth,0,0,nWeight,bItalic,bUnderline,bStrikeOut,0,0,0,0,0,"Comic Sans MS");

    GetDlgItem(IDC_ANZEIGE1)->SetFont(&myFont);
    sFey="Hallo";//global
    m_sStatic1=sFey;
    UpdateData(false);
    }

    In OnCtlColor

    HBRUSH CBmpFond2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    // TODO: Ändern Sie hier alle Attribute für den DC.
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    if(pWnd->GetDlgCtrlID()==IDC_ANZEIGE1)
    {
    pDC->SetBkMode(TRANSPARENT);
    return (HBRUSH)GetStockObject(NULL_BRUSH);
    }
    return hbr;
    }

    was mache ich hier falsch..?

    wenn ich das ganze in ein Button Funktion Aufrufe dann geht es

    void CBmpFond2Dlg::OnBnClickedButton1()
    {
    // TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.
    ////// f.k Fonds
    CFont myFont;
    int nHeight=26;
    int nWidth=9;
    int nWeight=10;
    bool bUnderline=false;
    bool bItalic=true;
    bool bStrikeOut=false;
    myFont.CreateFont(nHeight,nWidth,0,0,nWeight,bItalic,bUnderline,bStrikeOut,0,0,0,0,0,"Comic Sans MS");

    GetDlgItem(IDC_ANZEIGE1)->SetFont(&myFont);
    sFey="Hallo";
    m_sStatic1=sFey;
    UpdateData(false);
    }


Anmelden zum Antworten