Button aktualisieren in einer SDI-Anwendung
-
Hallo,
ich habe mir eine kleine GUI für ein Bibliotheksdatenbank gebastelt. Die SDI-Anwendung besteht aus Button die direkt in dem SDI-Fenster eingebaut sind. Diese funktioniert auch einwandfrei. Einzigstes Problem ist, wenn die GUI von einem anderen Fenster verdeckt wird und danach wieder aufgerufen wird, dann flackern die Buttons nur noch und können nicht mehr angeklickt werden.
Die Buttons sind alle in der Funktion OnDraw implementiert.
Poste hier mal den Code für einen Button:
m_BuchName.Create("Buch Suchen",
WS_CHILD | WS_VISIBLE,
CRect(20,40,200,70), this, ID_BCHERVERWALTEN_BUCHSUCHEN);Ich habe dann eine Updatefunktionen dazu gebaut: m_BuchName.UpdateWindow();
Leider bringt das aber nicht das gewünschte Ergebniss, weil der Button dann immer noch ein bischen Flakert und nicht mehr angeklicht werden kann.
Hat jemand eine passende Funktion für mich, oder eine Idee wie man richtig mit der UpdateWindow()-Funktion umgeht?Vielen Dank für eure Hilfe!
Gruß gabele
-
Heißt das Du erzeugst Die Button in OnDraw? Das wäre falsch.
Wenn das ein normaler View ist, dann solltest Du unbedingt im View WS-CLIPCHILDREN verwenden, sonst löscht die OnEraseBkGnd funktion auch immer Deinen Biutton.
Warum verwendest Du einen normalen CView und keinen CFormView?
-
Hallo Martin,
danke erst einmal für deine Antwort.
Ja ich hab die Button eben in dieser Funktion erstellt:
void CDatenbankprojektGUI2View::OnDraw(CDC* pDC)Da dies meine erste MFC GUI ist, weiß ich leider nicht wo ich die Buttons sonst erzeugen kann.
Die Funktion CFormView gibt es bei mir im Projekt noch gar nicht. Muss ich mir die Funktion erst erstellen, wenn ja wohin genau?
Sorry falls die Fragen ein bißchen primitiv sind.Gruß gabele
-
1. OnDraw ist wohl die ungünstigste Stelle für solch einen Code. Jetzt wird das Control neu erzeugt in jedem Anzeigezyklus. Ich glaube Du solltest mal ein paar Grundlagen büffeln.
2. Du kannst solche Control in er Funktion OnInitalUpdate erzeugen. Aber Achtung OnInitialUpdate wird bei SDI Applikationen auch öfters durchlaufen.
3. CFormView ist eine Klasse. Man kann sie statt CView verwenden, wenn man mit dem Wizard seine Applikation erzeugt.
-
Hallo Martin,
ich weiß das ich noch Grundlagen büffeln sollte, hab dafür aber leider zu wenig Zeit.
Erzeuge jetzt meine Button in der OnInitialUpdate Funktion, wie du mir geschrieben hast. Jetzt Funktioniert die GUI und die Buttons wie ich mir das gewünscht habe.
Vielen dank für deine Antworten, du hast mir sehr geholfen!Gruß Gabele