Seltsames Verhalten von Steuerhintergrundfarbe bearbeiten bei der Verwendung von WinXp gemeinsame Kontrollen

StackOverflow https://stackoverflow.com/questions/1621077

Frage

Ich bin ein seltsames Problem mit (na ja, zumindest finde ich es seltsam =)). Ich bin meine eigene GUI-Bibliothek zu schreiben, die ein Wrapper um Fenster api ist (und ja, ich bin mir dessen bewusst WTL und Frameworks wie MFC =)). In der jetzigen Phase habe ich gemeinsame Kontrollen in einer solchen Art und Weise eingekapselt: zum Beispiel bearbeiten Klasse besteht aus einem einfachen Fenster und einem Standard-Bearbeitungsfenster oberhalb (Mainwindow -> GhostWindow -> EditBox). Das ist, wie ich zum Beispiel eine Hintergrundfarbe eines bearbeiten innerhalb einer Bearbeitungsklasse ändern sich:

myedit->SetBkColor ( RGB ( 0, 0, 0 ) );

Und es funktionierte gut, bis ich InitCommonControlsEx und angebracht Manifest-Datei zu meinem Programm genannt. Nachdem Sie das getan, werden meine Änderungen Farben nur ändern kann, wenn sie den Fokus haben. Um ehrlich zu sein, ich habe keine umfassende Gedanken dazu haben, warum tun die verhalten sich wie folgt und was mache ich falsch, so ich werde jede Hilfe dankbar.

Danke, # 535.

War es hilfreich?

Lösung 2

Nun, alles ist viel einfacher, als ich dachte. Ich war einfach zu unaufmerksam = (Wenn man nicht Gebrauch Styling, ein Rohr :: SetBkColor (...), um Hintergrundfarbe zu ändern, und gibt eine Bürste aus WM_CTLCOLOR * verwenden Sie eine Rahmenfarbe zu ändern. Dinge anders geworden nach Styling ermöglichen Jetzt. :: SetBkColor (...) entspricht Fokus Farbe und Pinsel Rückkehr ändert Hintergrundfarbe. Shame on me = (

Andere Tipps

  1. Wenn Sie die Version 6 Manifest anhängen, wird der Anruf an InitCommonControlsEx unnötig.

  2. Wie auch immer. Mit der Version 6 gemeinsamen Kontrollen geladen wird XP Thematisierung auch für das Standard-Windows-Steuerelemente verwendet. Die Hintergrundfarben für die Kontrollen sind bemalt die XP-Thema Farbe verwendet wird, so dass die WM_CTLCOLOR * Nachrichten werden verwendet, weniger.

  3. Sie sind zwingende derzeit die coolor verschiedener Steuerelemente mit der WM_CTLCOLOR * Nachrichten?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top