Nachträglich Progress Dialog implementieren



  • Hallo,

    ich habe ein paar recht langsam performante 🙄 Funktionen und möchte nachträglich einen Dialog mit Progress Bar(s) aufblenden.

    hab das mal so gemacht:

    vorher:
    int ret = doFunc1(Para);
    int ret2 = doFunc2(Para2);
    
    nachher:
    CProgressDlg dlg(Para1, Para2);
    dlg.DoModal();
    ...
    BOOL CProgressDlg::OnInitDialog()
    {  initProgressBar();
       int ret = doFunc1(Para);
       stepUpProgressBar();
       int ret2 = doFunc2(Para2);
    }
    

    Leider wird im OnInitDialog noch gar kein Dialog angezeigt 😞
    Also hab ichs im

    CProgressDlg::OnShowWindow(BOOL bShow, UINT nStatus)
    

    die wird aber gar nicht erst aufgerufen.

    Wie könnt ich das noch machen?

    Wie läuft das, wenn ich den ProgressDlg "nichtmodal" aufruf 😕 Geht das?



  • einen dialog nicht modal aufzurufen machst du mit

    CProgressDlg dlg;
    dlg.Create(IDD_PROGRESS_DIALOG,this);

    dann zu

    CProgressDlg dlg(Para1, Para2);

    nachdem das fehlerfrei zu kompillern geht denke ich das du die zwei variablen im Funktionsrumpf deklariert hast.
    dort wust du sie dann auch wieder übergeben wenn du sie im dialog verwenden willst.

    CProgressDlg ::CProgressDlg (int Para1, int Para2, CWnd* pParent)
    {
       m_Para1 = Para1;
       m_Para2 = Para2;
    }
    

    was aber wenig sinn macht wenn du den Processdialog einmal erstellst und dann in der laufzeit des programms ändern willst. solltest du die Para werte an eine public funtion im CProgressDlg übergeben die direckt die Processbar steuert.


Anmelden zum Antworten