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