RadioButton SetWindowText()



  • Hallo,

    eine kleine Frage: warum bekomm ich momentan bei meinem Radiobutton (gezeichnet im Resource-Editor ohne einem Textlabel) nur den ersten Buchstaben vom Text (siehe Code) angezeigt?

    CStatic *pCText = static_cast<CStatic*>(GetDlgItem(IDC_RBTN_1));
    pCText->SetWindowText("Farbe: rot");
    

    Neben dem Radiobutton steht dann nur "F" -> wenn ich bereits im Resource-Editor einen Text eingebe (etwas länger), werden entsprechend auch mehrere Stellen nach dem Code dargestellt.

    Welche Funktion muss ich vor SetWindowText() aufrufen, die angibt wieviele Zeichen der String für die Beschriftung vom Radiobutton hat?

    Ein ähnliches Problem existiert bei der Farbe vom Text

    rdbtn1.SetTextColor(RGB(255,0,0), RGB(0,255,0));
    

    wird leider nicht ausgeführt...

    Gruß
    LaChef


  • Mod

    Wie wäre es damit den Button groß genug zu machen?
    Oder evtl. zu vermeiden das sich Controls überlappen?



  • Martin Richter schrieb:

    Wie wäre es damit den Button groß genug zu machen?
    Oder evtl. zu vermeiden das sich Controls überlappen?

    richtig getippt - ein dummer fehler 💡

    HBRUSH CImageTextButton::CtlColor(CDC* pDC, UINT nCtlColor) 
    {
       pDC->SetTextColor(m_clrCptnUpDwn);
       pDC->SetBkMode(TRANSPARENT);
    }
    

    Weißt du auch wie mann hier herausfinden kann welcher Radiobutton mit dieser Funktion aufgerufen wird??

    if(pWnd->GetDlgCtrlID() == IDC_RADBTN)
    

    Das hab ich gefunden, aber ein WND Handle hab ich ja in diesem Fall nicht...



  • Hallo,

    dein CImageTextButton wird doch von CWnd abgeleitet, und da GetDlgCtrlID eine CWnd-Methode ist, benötigt man keinen pWnd-Zeiger, es genügt:

    if(GetDlgCtrlID() == IDC_RADBTN))
    

    und natürlich hat jedes CWnd auch ein Handle, verfügbar über m_hWnd .

    MfG,

    Probe-Nutzer


Anmelden zum Antworten