024
04.07.2004, 15:56 Uhr
t10ottoo
|
Jo, man sollte das schon hier posten Also mit der MessageBox gehts, allerdings ist die MessageBox hinter dem Dialog, also muss ich den Dialog erstmal minimieren, damit ich die MessageBox sehe, weiß net, ob dir das zur Fehlerbeseitigung weiterhilft.
Hier ist mal der Code, den ich bei der ...App hinzugefügt habe... Also mein Hauptdialog, wo auch die Progressbar dann erstmal ablaufen soll, heißt "Vorratsprogramm":
C++: |
//Prototyp Threadfunktion UINT func(LPVOID arg);
|
Das steht in der Vorratsprogramm.cpp, die bekomme ich, wenn ich auf "CVorratsprogrammApp" klicke.
Weiter unten steht dann das:
C++: |
BOOL CVorratsprogrammApp::InitInstance() { AfxEnableControlContainer();
// Standardinitialisierung // Wenn Sie diese Funktionen nicht nutzen und die Größe Ihrer fertigen // ausführbaren Datei reduzieren wollen, sollten Sie die nachfolgenden // spezifischen Initialisierungsroutinen, die Sie nicht benötigen, entfernen.
#ifdef _AFXDLL Enable3dControls(); // Diese Funktion bei Verwendung von MFC in gemeinsam genutzten DLLs aufrufen #else Enable3dControlsStatic(); // Diese Funktion bei statischen MFC-Anbindungen aufrufen #endif
AfxBeginThread((AFX_THREADPROC)func,NULL,THREAD_PRIORITY_NORMAL,0,0,NULL); // Aufwendige Initialisierungen simulieren Sleep(2000); [.....]
|
Und ganz unten ist die Funktion:
C++: |
UINT func(LPVOID arg) { //Warten dass der Dialog gezeichnet ist und alle Initialisierungen abgeschlossen sind WaitForInputIdle(GetCurrentProcess(),INFINITE); CVorratsprogrammDlg vorrat; CProgressCtrl &progress=((CVorratsprogrammDlg*)((CVorratsprogrammApp*)AfxGetApp()->GetMainWnd()))->progress; progress.SetPos(0); progress.SetRange(0,100); progress.SetStep(1); while(progress.GetPos() < 100) { progress.StepIt(); Sleep(5); }
HWND hDlg=(AfxGetApp()->GetMainWnd())->m_hWnd;
HWND ButtonOK = GetDlgItem(hDlg,IDOK); HWND ButtonCANCEL = GetDlgItem(hDlg,IDCANCEL); HWND Progress = GetDlgItem(hDlg,IDC_STATUS); ShowWindow(Progress,SW_HIDE); ShowWindow(ButtonOK,SW_SHOW); ShowWindow(ButtonCANCEL,SW_SHOW);
return 0; }
|
Meine Progressbar hat die Variable "progress" und sie selber heißt "IDC_STATUS"
Hab mich nur an deinem Code orientiert, sollte eigentlich richtig sein...
Gruß Thomas Dieser Post wurde am 04.07.2004 um 15:58 Uhr von t10ottoo editiert. |