nur Drop-Feld der Drop List verfärbt sich falsch
-
ich weiß nicht ob ich das richtig verstanden hab aber schau mal bitte hier war das so gemeint?
Hab jetzt mal noch mein IDC_CMB_SEARCH also meine Combo da mit rein gemacht die hat dann noch nen dritten Wert. Und nu? Kannst du mit diesen Infos was anfangen??
-
Lass pTest mal auf IDC_CMB_SEARCH zeigen und dann drück so oft F5, bis die beiden Zeiger gleich sind (oder bau einen bedingten Breakpoint ein).
-
also hiersind jetzt beide IDCs drin.
Ich mach mich jetzt mal auf die suche nach gleichen!
DANKE schon mal
-
jetzt dreh ich denn gleich ganz durch, wenn sie gleich sind springt er über die If abfrage schau dir das mal an:hier
-
Immer?
Sei mal so geduldig und debugge komplett durch. Die Funktion wird SEHR oft aufgerufen.
Und achte darauf, dass sich Programm und Visual C++ NIRGENDWO auch nur ein ganz klein wenig überdecken!!!
So kannst du zugucken und sonst wäre es eine Endlosschleife.
-
in dem moment wo ich die Combo sichtbar mache springt er mir gar nie in die IF
also wennm_edtSearch.ShowWindow(FALSE); m_cmbSearch.ShowWindow(TRUE);
da passiert nichts wenn ich jetzt aber auf den Pfeil drücke zum aufklappen, dann geht er rein!
Da hab ich jetzt mal alle Adressen notiert schau dir mal bitte an ob du da was daraus ableiten kannst, warum und wieso der sowas macht.
-
Wenn die Cbx dran ist geht er nie in die if?
Dann ist die unschuldig und die falsche Farbe müßte auch dann kommen, wenn du sie auskommentierst - stimmt das?
Sorry, so aus der Ferne ist es wirklich schwer.
-
estartu_de schrieb:
Wenn die Cbx dran ist geht er nie in die if?
Ja ich hab auch mal nen Breakpoint gemacht um mich nochmal zu vergewissern ob das wirklich stimmt hab gemacht if pWnd == pTest2 (also die Combo) und das ganze in der If. Ich konnte machen was ich wollte der ist da nie rein gegangen
estartu_de schrieb:
Dann ist die unschuldig und die falsche Farbe müßte auch dann kommen, wenn du sie auskommentierst - stimmt das?
Wen soll ich auskommentieren? Hab die Farbzuweisung auskommentiert dann wird die Combo auch nicht rot. Fakt ist wohl schon wie du gesagt hast dass die Combo aus mehreren Teilen aufgebaut ist, und da ist dann halt auch für jeden Teil eine eigene Speicheradresse. Drum geht "IDC_CMB_SEARCH" da nie rein.
-
Verstehe ich nicht, das widerspricht sich alles.
Also, ich würde versuchen, eine große if um die beiden oberen zu machen und immer wenn es um die Combobox geht wird der Teil übersprungen.
Wenn das immer noch nicht geht bin ich wirklich ratlos.
-
estartu_de schrieb:
... immer wenn es um die Combobox geht wird der Teil übersprungen...
Was soll ich in die große if packen? IDC_CMB... geht ja nicht. Das haben wir ja bereits festgestellt.
-
Haben wir? Ich dachte du hast es nur im Debugger nirgends zum Angucken gefunden.
Also, ohne weitere Umstellungen (eigene Editklasse, die selber die Farbe ändert) weiß ich nix mehr.
-
Also ich getCTRLID() == IDC_CMB.. abgefragt und es war genau das gleiche. Jetzt halte dich fest, jetzt kommt ein Mörder phänomen!!!
Ich hab die Editumfärbung auf ein Einstellungstechnisch gleiches Edit gelegt, und siehe da, die Combo bleibt weiß! Juhu!!
LEIDER NEIN!
das neue Edit aktualisiert nicht richtig lässt wenn es mal aktualisiert rote Ränder stehen ...
Ich hatte gehofft, dass ich vielleicht durch umbenennung weiter komme, aber auch das hilft nichts! Ich geh jetzt nach Hause und morgen überleg ich mir wie ich diesen Bug als Feature verkaufen kann. Wenn ich schon nicht proggen kann dann versuch ich mich halt mal im verkaufen!Wie Sun schon sagte: "It´s not a bug! IT´S A FEATURE!!!!!"
-
Ich habe mir das jetzt nicht alles durchgelesen, habe aber auch schon mal mit farbigen ComboBoxen gekämpft, die sich unter XP anders als unter NT verhalten. Massive Unterschiede beim Färben gab es dabei je nach dem ob die ComboBox auf Dropdown-Listenfeld oder Dropdown eingestellt war. Habe ich damals so versucht (s.u.). Das MemberVariable.Invalidate() hat dabei übrigens gegen den besagten stehengelassenen Rand geholfen.
HBRUSH CFarbigeComboBoxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if((pWnd == &m_CB1) && (m_CB1.IsWindowEnabled()) && (m_CB1.GetWindowTextLength()==0)) { pDC->SetBkColor(RGB(255,0,0)); return b; // CBrush b(RGB(255,0,0)); <- hatte ich damals global angelegt } if((pWnd == &m_CB2) && (m_CB2.IsWindowEnabled()) && (m_CB2.GetWindowTextLength()==0)) { pDC->SetBkColor(RGB(255,0,0)); return b; } // pDC->SetBkColor(RGB(255,0,0)); // färbt die Texte in der ComboboxListe return hbr; } void CFarbigeComboBoxDlg::OnSelchangeCombo1() // Dropdown-Listenfeld { m_CB1.Invalidate(); } void CFarbigeComboBoxDlg::OnSelchangeCombo2() // Dropdown { m_CB2.Invalidate(); }
-
Vielen Dank Isbeau, doch leider funktioniert auch das nicht, wenn ich das von dir ausprobiere, dann krieg ich trotzdem nur quasi das Editfeld gefärbt, nicht aber den drop-Teil. Der springt mir immernoch ins ID-Edit. Hab auch man in der nCtrlColor switch aller abgefangen, aber selbst dann tut sich nichts!