Farbe vom Text Feld Ändern während des laufzeites ??



  • Hallo dEUs 🙂

    ich habe es so gemacht kriege aber ein absturz.

    ich programmiere ein Midi- Begleitautomat

    Also die Farbe soll sich ändern wenn Keyboard Taste gedrückt ist
    pMsg->data2 !=0.

    Müsste auch da mit gehen wenn es mit einen Button geht oder ?

    Was mache ich da Falsch ??

    CMaxMidiProtoDlg:: TataturAnAus(LPMIDIEVENT pMsg)
    {
    if(pMsg->data2 !=0 )// Tastatur gedrückt
    {
    m_Brush1.DeleteObject;
    m_Brush1.CreateSolidBrush(RGB(55,4,153));
    Invalidate();
    }
    else
    {
    m_Brush1.DeleteObject;
    m_Brush1.CreateSolidBrush(RGB(55,4,153));
    Invalidate();
    }
    }



  • mach mal bei DeleteObject klammern hin 😉
    Habs in meinem Code oben verbessert. Sorry.



  • Ja jetz tut sich was das Bild Flimmert kurz wenn ich die Taste drücke.
    Aber die Farbe ändert sich nicht!

    ich habe m_Brush1 als public:
    Leigt es da ran und warum Flimmer das ganze bild ?



  • dann schick das invalidate nur an das editcontrol:

    GetDlgItem(IDC_BOOK1)->Invalidate();
    

    Und die Farbe bleibt gleich, weil du beide Male die selbe verwendest 😉



  • Ahhhhh Mein Lieber dEUs hast mich fast wieder von meinem qualen erlöst nur noch ein Bitte erst mal dankeee 🙂 .

    Wie muss ich mit beiden hier machen wenn ich sie auch Ändern möchte über die KeyboardTastatur.

    pDC->SetTextColor(RGB(0,0,0));//Text Farbe ändern
    pDC->SetBkColor(RGB(255,204,153));



  • Da wäre es das einfachste, wenn du zwei Membervariablen vom Typ COLORREF machst. Und die dann an den selben Stellen wie den Brush setzt. Und dann in OnCtlColor statt fest reinkodierten Werten einfach diese Variablen verwenden.



  • Hab das jetz so gemacht.

    ///// .h
    class CMaxMidiProtoDlg : public CDialog
    {
    // Konstruktion
    public:
    COLORREF m_clorreftxt;
    COLORREF m_clorreftxtHg;
    ////////////////////////////////////////

    //////////////OnCtlColor
    if(pWnd->GetDlgCtrlID() == IDC_BOOK1)
    {

    //pDC->SetTextColor(RGB(0,0,0));//Text Farbe ändern
    //pDC->SetBkColor(RGB(255,204,153));

    pDC->m_clorreftxt->SetTextColor(RGB(0,0,0));
    pDC->m_clorreftxtHg->SetBkColor(RGB(255,204,153));
    //////////////////////////////////////////////////////////

    return m_Brush1;

    /////////////// .cpp

    CMaxMidiProtoDlg:: TataturAnAus(LPMIDIEVENT pMsg)

    {

    if(pMsg->data2 !=0 )
    {

    m_Brush1.DeleteObject();
    m_Brush1.CreateSolidBrush(RGB(255,204,153));

    m_clorreftxt;
    m_clorreftxtHg;
    }

    Bekomme 4 Fehler meldung 😞



  • Hab das jetz so gemacht.

    ///// .h
    class CMaxMidiProtoDlg : public CDialog
    {
    // Konstruktion
    public:
    COLORREF m_clorreftxt;
    COLORREF m_clorreftxtHg;
    ////////////////////////////////////////

    //////////////OnCtlColor
    if(pWnd->GetDlgCtrlID() == IDC_BOOK1)
    {

    //pDC->SetTextColor(RGB(0,0,0));//Text Farbe ändern
    //pDC->SetBkColor(RGB(255,204,153));

    pDC->m_clorreftxt->SetTextColor(RGB(0,0,0));
    pDC->m_clorreftxtHg->SetBkColor(RGB(255,204,153));
    //////////////////////////////////////////////////////////

    return m_Brush1;

    /////////////// .cpp

    CMaxMidiProtoDlg:: TataturAnAus(LPMIDIEVENT pMsg)

    {

    if(pMsg->data2 !=0 )
    {

    m_Brush1.DeleteObject();
    m_Brush1.CreateSolidBrush(RGB(255,204,153));

    m_clorreftxt;
    m_clorreftxtHg;
    }

    Bekomme 4 Fehler meldung 😞



  • Hab das jetz so gemacht.

    ///// .h
    class CMaxMidiProtoDlg : public CDialog
    {
    // Konstruktion
    public:
    COLORREF m_clorreftxt;
    COLORREF m_clorreftxtHg;
    ////////////////////////////////////////

    //////////////OnCtlColor
    if(pWnd->GetDlgCtrlID() == IDC_BOOK1)
    {

    //pDC->SetTextColor(RGB(0,0,0));//Text Farbe ändern
    //pDC->SetBkColor(RGB(255,204,153));

    pDC->m_clorreftxt->SetTextColor(RGB(0,0,0));
    pDC->m_clorreftxtHg->SetBkColor(RGB(255,204,153));
    //////////////////////////////////////////////////////////

    return m_Brush1;

    /////////////// .cpp

    CMaxMidiProtoDlg:: TataturAnAus(LPMIDIEVENT pMsg)

    {

    if(pMsg->data2 !=0 )
    {

    m_Brush1.DeleteObject();
    m_Brush1.CreateSolidBrush(RGB(255,204,153));

    m_clorreftxt;
    m_clorreftxtHg;
    }

    Bekomme 4 Fehler meldung 😞



  • was ist den jetz passiert sorry !!!



  • Dankeeeee..
    Hab jetz mit ne driten variable hin bekommen .

    Grüße Can


Anmelden zum Antworten