Probleme mit Splash-Screen



  • Hi zusammen!

    Vorweg: Ich hab den Tipp in den FAQs gelesen mit dem Splash-Screen einfügen über:
    --> Dem Projekt hinzufügen --> Komponente --> Splashscreen.

    ABER:

    1. Arbeite ich mit der englischen VC++ 5.0 Version und
    2. hab ich die Komponente irgendwie net 😞

    Naja, ich dachte mir halt, ich designe mir meinen Splashscreen selber und baue ihn selber in mein Programm mit ein.

    Bei meinem Programm handelt es sich um ein MDI Programm.
    Mein Splash Screen ist ein Dialog mit einer Bildkomponente drauf + ein Edit Feld, welches während mein Programm lädt (Datenbankverbindung aufbaut, Initalisierungen etc.) diese Infos anzeigen soll.

    Nun folgendes Problem:

    Wenn ich nun meinen Splashdialog lade und anzeige, während im Hintergrund meine MDI Anwendung eine Verbindung zur Datenbank aufbaut etc. bleibt mein Dialog einfach grau 😞
    Mein Bild und mein Text werden nicht angezeigt 😞

    Kann mir jemand einen Tipp geben, wie ich z.B. veranlasse, dass sich

    a) mein Splashscreen (Dialog) immer im Fordergrund befindet
    und
    b) sich mein Dialog einfach alle paar ms einfach neu zeichnet

    Wäre sehr dankbar für Tipps und Anregungen.

    Hier mein Code:

    // Initalisierung meiner Anwendung
    BOOL CMyApp::InitInstance()
    {
       CSplashScrn* pSplash;
       pSplash = new CSplashScrn;
       if(pSplash != NULL)
       {
          pSplash->Create(IDD_SPLASHDIALOG,NULL);
          pSplash->m_EditInfo = "Anwendung wird initalisiert...";
          pSplash->UpdateData(FALSE);
          pSplash->ShowWindow(SW_NORMAL);
       }
       ...
    
       // Verschiedene Initalisierungen
       pSplash->m_EditInfo = "bla bla....";
       pSplash->UpdateData(FALSE);
       ...
    
      // Datenbankverbindung aufbauen
      // etc.
      pSplash->m_EditInfo = "Datenbankverbindung wird aufgebaut...";
      pSplash->UpdateData(FALSE);
      ...
    
      ...
      am Ende
      pSplash->DestroyWindow();
    }
    


  • Entweder du startest einen Thread der die Initialisierungen macht oder du rufst ab und an das auf:

    MSG msg;
    while(PeekMeesage(&msg,0,0,0))
      AfxGetApp()->PumpMessage();
    

    Für immer im Vordergrund: CWnd::SetWindowPos(&wndTopMost,...);

    [ Dieser Beitrag wurde am 06.12.2002 um 15:16 Uhr von Nemesyzz editiert. ]


Anmelden zum Antworten