Liste verschwindet nach Überlagerung durch anderes Fenster
-
Guten abend zusammen,
ich hab hier ein Problem mit einem CListCtrl Object:
Ich habe in meinem Dialog ein solches Objekt in OnInitDialog erzeugt:
m_List.Create(WS_VISIBLE | ES_READONLY | LVS_REPORT | LVS_NOCOLUMNHEADER | LVS_SHOWSELALWAYS, CRect(5,10,795,510), this, IDC_LIST); m_List.SetBkColor(RGB(0,0,0)); m_List.InsertColumn(0, "Name", LVCFMT_LEFT, 790); m_List.SetFont(font, false);Wenn der Focus jetzt in dieser Liste ist, ich dann ein anderes Fenster aktiviere, das meinen Dialog verdeckt, und ich dann meinen Dialog wieder aktiviere, ist die Liste komplett verschwunden und wird erst wieder Stück für Stück sichtbar, wenn ich die einzelnen Zeilen auswähle.
Wenn der Focus vorher nicht in der Liste ist, bleibt sie sichtbar.Vor der Liste erzeuge ich noch das Hintergrundbild:
m_bmBackground.LoadBitmap(IDB_BG_ADDSONGS); m_stBackground.Create(NULL, SS_BITMAP | WS_VISIBLE, CRect(0,0,800,600), this, IDC_BG_ADDSONGS); m_stBackground.SetBitmap(m_bmBackground);Hat jemand eine Idee, wie die Liste dauerhaft sichtbar bleibt?
Danke und schönen Gruß
MrFlow
-
OK, ohne Hintergrundbild ist die Liste immer sichtbar.
Wie bekomm ich denn das Hintergrundbild in den Hintergrund bzw die Liste in den Vordergrund?
-
Du solltest dein Hintergrundbild für deinen Dialog in der ON_WM_ERASEBKGND() mit der funktion BitBlt() der klasse CDC in den Hitergrund deines Dialoges Blitten und schon hast du keine Probleme mit deinem Hintergrundbilde und deiner Listbox
Gruß Matthias
-
Als Ergänzung: Die Windows Controls lassen sich nicht einfach komponieren und in Vordergrund und Hintergrund aufteilen. Die meisten Control müssen immer für Ihren eigenen Hintergrund sorgen. Deshalb ist der Hinweis von CTecS ertse Wahl!
-
Danke für die Antwort, nach sowas hab ich gesucht. hab von der Funktion zwar noch nie was gehört, aber ich probier das mal aus.
Wunder mich aber doch, da ich mit Buttons und Editboxen kein Problem habe.
-
Weil du mit sicherheit das Static in dem Du dein "Hintergrundbild" angezeigt hast vor den besagten Button in den Dialog eingesetzt. Oder um es genauer zu sagen, das ganze hängt an der Tabulator-Reihenfolge.
Gruß Matthias