Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo!

Ich habe ein Programm, das eine Aufgabe macht und dafür eine Weile braucht. Nun habe ich ein Dialog gemacht mit einem Progressbar.

Jetzt möchte ich, das wenn die Aufgabe startet, dieser ProgressDialog hochkommt, und ich aus dem Hauptdialog die Progressbar steuere. Modal kann ich das ja nicht machen, weil der hauptdialog dann nicht mehr weiter läuft...

Ich denke das geht mit Create(...), ich habe auch schon einiges versucht, aber ich kriegs nicht hin.

Kann mir mal einer ein BeißpielCode posten?

Am besten währe es noch, wenn man den Fokus nicht mehr auf den hauptdialog setzen kann, so wie beim modalen.

Sowas kann doch nicht so schwer sein???

Das sieht man doch überall, WinRAR, WinZIP, etc....

Ich brauche das ganz dringend....

Danke.

Geschrieben

CProgressDlg* pDialog;

pDialog = new CProgressDlg();

if(pDialog != NULL)

{

BOOL ret = pDialog->Create(IDD_PROGRESS,pDialog);

if(!ret)

AfxMessageBox("Fehler beim Erzeugen des Dialogs");

pDialog->ShowWindow(SW_SHOW);

}

else

{

AfxMessageBox("Fehler beim Erzeugen des Dialog-Objekts");

}

So wird eine nicht-modaler Dialog erzeugt. CProgressDlg ist die Klasse für mein Dialog Fenster und IDD_PROGRESS meine Ressourcen-ID. Wenn der Prozess von der eine rechenintensive Aufgabe ist, brauchst du wahrscheinlich noch eine andere Funktion zum Neuzeichnen des Fensters. Das geht dann mit:

void COptionsDlg:: DoEvents()

{

MSG msg;

m_bCancel = FALSE;

// Process existing messages in the application's message queue.

// When the queue is empty, do clean up and return.

while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE) && !m_bCancel)

{

if (!AfxGetThread()->PumpMessage())

return;

}

}

Geschrieben

hallo panicman,

das ist das, was in der msdn steht:

Bei einem nichtmodalen Dialogfeld sollten Sie Ihren eigenen öffentlichen Konstruktor in Ihrer Dialogklasse bereitstellen. Um ein nichtmodales Dialogfeld zu erstellen, rufen Sie Ihren öffentlichen Konstruktor und dann die Member-FunktionCreate des Dialogobjekts auf, um die Dialogressource zu laden. Sie können Create sowohl während als auch nach dem Aufruf des Konstruktors aufrufen. Verfügt die Dialogressource über die Eigenschaft WS_VISIBLE, so wird das Dialogfeld unmittelbar angezeigt. Ist dies nicht der Fall, so sollten Sie die zugehörige Member-FunktionShowWindow aufrufen.

Nachdem das Dialogfeld und sämtliche zugehörigen Steuerelemente erstellt wurden, aber noch bevor das Dialogfeld (eines beliebigen Typs) auf dem Bildschirm angezeigt wird, wird die Member-FunktionOnInitDialog des Dialogobjekts aufgerufen. Bei einem modalen Dialogfeld erfolgt dies während des Aufrufs von DoModal. Bei einem nichtmodalen Dialogfeld wird OnInitDialog aufgerufen, wenn Create aufgerufen wird. Sie überschreiben normalerweise OnInitDialog, um die Steuerelemente des Dialogfelds zu initialisieren, wie z. B. die Einstellung des Anfangstextes in einem Bearbeitungsfeld. Sie sollten die Member-Funktion OnInitDialog der Basisklasse CDialog beim Überschreiben von OnInitDialog aufrufen.

Wenn Sie die Hintergrundfarbe Ihres Dialogfelds (und aller anderen Dialogfelder in Ihrer Anwendung) einstellen wollen, lesen Sie hierzu Einstellen der Hintergrundfarbe des Dialogfelds.

ich hab bis jetzt nur modale dialoge erstellt, deshalb hab ich keine codes.

k.o.b

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...