Steuerelemente - Non-Modales Dialogfeld



  • Hi,

    mit der Winapi-Funktion createprocess starte ich eine exe. Während der prozess läuft, öffne ich ein non-modales Dialogfeld. Die Steuerelemente dieses Dialogfeldes sind jedoch durch die Funktion Waitforsingleobject blockiert, solange der prozess läuft.

    CreateProcess( NULL,Variable, NULL, NULL, TRUE, CREATE_DEFAULT_ERROR_MODE|
                      NORMAL_PRIORITY_CLASS, NULL, m_sFilePath, &INFO, &PROCCINFO);
    
    CStartDlg *pDlg = new CStartDlg;
    pDlg->Create(IDD_STARTEDDLG,this);
    pDlg->ShowWindow(SW_SHOW);
    
    WaitForSingleObject(PROCCINFO.hProcess, INFINITE);
    
    CloseHandle(PROCCINFO.hProcess);
    

    Kennt jemand eine Möglichkeit wie ich die Steuerelemente trotzdem ansprechen kann?



  • NON MODAL heißt übrigend nicht das es selbst in einem Thread läuft.
    Es ist und belibt immer noch der Hauptthread.
    Um dein Problem zu lösen musst du das ganze in einem Thread machen.



  • Du meinst einen Extra-Thread für das non-modale dialogfeld erstellen?

    z.B. mit CreateThread?



  • Oder nochmal anders. Ich habe die Sache schon mit einem modalen dialogfeld ausprobiert. Da hat alles geklappt. Nur habe ich das Problem, dass sich das Fenster nach Ablauf des Prozesses von alleine schließen soll und nicht durch das drücken eines buttons.



  • Da rufe einfach OnOK auf oder OnClose.



  • Wie mache ich das denn? Er bleibt ja in der Zeile dlg.DoModal stehen, solange ich keinen Button drücke.

    CreateProcess( NULL,Variable, NULL, NULL, TRUE, CREATE_DEFAULT_ERROR_MODE|
                      NORMAL_PRIORITY_CLASS, NULL, m_sFilePath, &INFO, &PROCCINFO);
    
    dlg.DoModal();
    
    WaitForSingleObject(PROCCINFO.hProcess, INFINITE);
    
    dlg.OnOK();
    
    CloseHandle(PROCCINFO.hProcess);
    

Anmelden zum Antworten