CStaticEx auf Sichtbarkeit prüfen

casslin

Grünschnabel
Hallo,

ich habe ein Problem, ich möchte gern ein CStaticEx (abgeleitet von CStatic) auf Sichtbarkeit prüfen und dachte ich mach das mit

CStaticEx m_pStaticControl;
if(m_pStaticControl->IsWindowVisible())
m_pStaticControl->SetWindowText("Text");

Aber leider liefert dies immer false zurück. Wie kann ich ein CStatic auf Sichtbarkeit prüfen?

LG casslin
 
Zuletzt bearbeitet:
Hallo,

bei deinem Code kann ich keinen Fehler erkennen. Wurde den vor dem Test schon ein m_pStaticControl->Create(...) bzw. m_pStaticControl->ShowWindow(...) aufgerufen?

Gruß
MCoder
 
Also create bzw showWindow wurde initial nicht aufgerufen und m_pStaticControl ist am Anfang leer.

Mein Problem ist eben, egal ob initial das Feld sichtbar oder nicht sichtbar ist, geht die if(m_pStaticContro->IsWindowVisible() ) schief. Im Laufe des Programms werden einige controls sichtbar (mit showWindow). Und dadurch das ein großes editierbares Feld darüber liegt wurde durch SetWindowText immer etwas gefüllt und dadurch flackert ein graues Feld auf. Das sollte eigentlich durch den obenstehenden Code abgefangen werden. Hab auch nichts im Internet gefunden was mir dabei weiter helfen würde.

Habe das Gefühl, wenn ich IsWindowVisible aufrufe, dies nicht für meine Static's gilt, da diese kein echtes Fenster sind, sonder nur CStatic Felder.
 
Also CStatic sind schon richtige Fenster, da sie ja wie andere Controls auch von CWnd abgeleitet sind. IsWindowVisible() funktioniert auch mit CStatic - offensichtlich führst du allerdings den Test immer zu einem Zeitpunkt durch, an dem das Fenster tatsächlich nicht sichtbar ist.

Gruß
MCoder
 
Also mein m_pStaticControl ist vom Typ CStaticEx was vom CStatic abgeleitet ist.
Dies wird als Text Control im Visual Studio gehandhabt.

Ich habe ein Control wo ich mir sicher sein kann 1. es ist initial sichtbar und 2. es wird nicht durch showWindow verändert. Dadurch erwarte ich, wenn ich nach Sichtbarkeit frage, das true zurück kommt (ohne durch debuggen, dass das Fenster vernünftig mit seinem Text angezeigt wird). Dies funktioniert nicht.
 
Muss dazu sagen, der Code ist nicht von mir. Also habe jetzt noch mal jemanden gefragt. Und es ist wirklich so, dass alle Felder initial auf nicht sichtbar gestellt werden.

Hab mein Problem mit

if(m_pStaticControl->GetStyle() & WS_Visible)
setWindowText("Text");

gelöst bekommen.

@ MCoder: Danke trotzdem für deine Hilfsbreitschaft und Tipps.
 
Zurück