Aufruf, wenn Dialog erstellt ist



  • Ich hab ein Problem, bei dem ich nicht weiter weiß.
    Ich muss ein Hardware-Handle laden und aufrufen. Wenn ich das allerdings im OnInit mache klappt das nicht. Liegt wohl daran, dass das Fenster noch nicht da ist. Welche Funcktion sollte/muss ich nehmen, damit es ausgeführt wird sobald der Dialog erstellt ist?

    Danke



  • Hier sind mal ein paar Ideen, was anderes fällt mir gerade auch nicht ein...
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-246413.html



  • Bei OnInitDialog musst du darauf achten, dass du nicht versuchst, auf Controls zuzugreifen, wenn CDialog::OnInitDialog noch nicht aufgerufen wurde (klatsch den Aufruf einfach ganz nach oben, dann kann nix schiefgehen).



  • OnShowWindow(BOOL bShow, UINT nStatus) sollte das sein was Du suchst.

    Die Variable bShow abfragen TRUE = Fenster wird angezeigt
    FALSE = Fenster wird nicht angezeigt

    Turmfalke64



  • Turmfalke64 schrieb:

    OnShowWindow(BOOL bShow, UINT nStatus) sollte das sein was Du suchst.

    Die Variable bShow abfragen TRUE = Fenster wird angezeigt
    FALSE = Fenster wird nicht angezeigt

    Turmfalke64

    Ich denke eher nicht. Er will Hardware ansprechen und sein Handle öffnen, und das einmal am Anfang und nicht jedesmal, wenn das Fenster z.B. maximiert wird...



  • selbst das läßt sich in OnShowWindow(BOOL bShow, UINT nStatus) lösen, durch
    eine einfache Abfrage, in Form einer Variablen in Verbindung mit einer
    If-Anweisung.

    In OnShowWindow(BOOL bShow, UINT nStatus) liegt halt der Vorteil, das der
    Dialog nach dem Programmstart erzeugt worden ist und die Routine unmittelbar
    nach der Erzeugung des Dialoges aufgerufen wird.

    Turmfalke64



  • Turmfalke64 schrieb:

    selbst das läßt sich in OnShowWindow(BOOL bShow, UINT nStatus) lösen, durch
    eine einfache Abfrage, in Form einer Variablen in Verbindung mit einer
    If-Anweisung.

    In OnShowWindow(BOOL bShow, UINT nStatus) liegt halt der Vorteil, das der
    Dialog nach dem Programmstart erzeugt worden ist und die Routine unmittelbar
    nach der Erzeugung des Dialoges aufgerufen wird.

    Turmfalke64

    Wo liegt der Vorteil gegenüber OnInitDialog (nach CDialog::OnInitDialog)? Da sind auch alle Controls verfügbar, und eine extra Variable kann ich mir sparen.



  • Ich habs mal probiert und leider klappts auch nicht. Irgendwas anderes läuft bei mir schief. Der Debugger sagt mir, dass mein Handle nicht übernommen wird.
    Kurios ist, dass es wenn ich die Funktion mit einem Button auslöse es einwandfrei läuft. Nur wenn die Funktion im OnInit() oder allen anderen Funktionen (ShowWindow, Enable, etc) klappts nicht. Scheibenkleister 😞



  • Uruk-h4j schrieb:

    Ich habs mal probiert und leider klappts auch nicht. Irgendwas anderes läuft bei mir schief. Der Debugger sagt mir, dass mein Handle nicht übernommen wird.
    Kurios ist, dass es wenn ich die Funktion mit einem Button auslöse es einwandfrei läuft. Nur wenn die Funktion im OnInit() oder allen anderen Funktionen (ShowWindow, Enable, etc) klappts nicht. Scheibenkleister 😞

    Irgendwas muss ja anders sein. Wenn es nicht an der anfänglichen Initialisierung der Controls liegt (denn das machst du mit CDialog::OnInitDialog), hast du dann vielleicht noch einen Timer laufen, der irgendwas Relevantes verändert oder so?

    Zeig am besten mal (mindestens), wie du dein Handle in OnInitDialog öffnen willst.

    EDIT: Und was der Debugger sagt, solltest du noch mal ganz genau hier posten.



  • Soooo, das ganze kann at-acta gelegt werden. ICh trottel hab vergessen eine Funktion aufzurufen, damit das Handle auch überprüft und gesetzt wird. Das war nämlich in der "Button"-Funktion drin. Trotzdem Danke für die Hilfe und den Hinweis mit OnShow().


Anmelden zum Antworten