Windowscursor temporär ändern



  • Hi,

    ich hät da gern mal wieder ein Problem.
    Und zwar hab ich n kleines Tool zur Bug-Dokumentation geschrieben. Nur dauert das einlesen der Datenbank so lang bei der Dialoginitialisation, dass man denken könnte, es passiert nichts wenn es gestartet wird.

    Bisher hatte ich wie folgt Vorgehen, dass ich bei OnInitDialog alle Listen initialisiert hab und die Datenbank hineingeladen wurde.

    BeginWaitCursor();
    

    und

    EndWaitCursor();
    

    helfen da jedoch scheinbar noch nicht, da der Dialog noch nicht angezeigt wurde/ wird.
    Alternativ hab ich es nach OnShowWindow() verlagert. Allerdings noch mit genau dem gleichen Effekt (keine Cursoränderung). Der Dialog wird zu dem Zeitpunkt aber auch noch nich angezeigt.

    Gibt es ein zur Not ein Ereignis, was greifen würde wenn der Dialog fertig angezeigt ist und ich dann den Cursor während des Datenbank auslesens ändern kann?
    Bei meinem "Done-Filter" verwende ich den geänderten Cursor bereits erfolgreich.

    MfG
    Antivirus


  • Mod

    Sicherlich hilft das.
    Das Problem ist nur, dass jedes Fenster das aktiv ist und über das Du den Cursor bewegst eben den Mauszeiger von selbst ändert. Solange der Cursor über Deiner Applikation steht wird auch brav der WarteCursor angezeigt.



  • Aber wie kann ich den Cursor ändern, wenn der Dialog noch nicht angezeigt wurde, da er ja selbst beim Einlesen der Datenbank in OnShowWindow(...) noch nich dargestellt ist?

    void CXMCHistory_BugDlg::OnShowWindow(BOOL bShow, UINT nStatus)
    {
      CDialog::OnShowWindow(bShow, nStatus);
    
      if(m_bFirstShow)
      {
        //eigene animierte Cursorklasse => sobald aus OnShowWindow raus, wird wieder normaler Cursor angezeigt
        CXMCWaitCursor WaitCursor(ANICURSOR_STOP_UHR);   // "windows/Cursors/stopwtch.ani"
    
        //WindowsWaitCursor
        BeginWaitCursor();
    
        //Datenbank einlesen
        ...
    
        EndWaitCursor();
        m_bFirstShow = FALSE;
      }
    }
    

    So geht's leider noch nich 😞

    Gibt es noch ein Ereignis, was eintreten kann, wenn der Dialog fertig ist mit der Darstellung? 😕

    MfG
    Antivirus


  • Mod

    Du kanst den Dialog einfach schon in OnInitDialog sichtbar machen...


Anmelden zum Antworten