CProgressCtrl in nicht modalem Dialog 'fernsteuern'
-
Hello again,
in meiner App muss ich hin und wieder auch grössere Textfiles laden( > 100 MB )und den Inhalt formatieren.
Da bin ich auf die Idee gekommen, während des Ladens einen nicht modalen Dialog mit einer Progressbar anzuzeigen. Soweit, so gut. Der Dialog wird angezeigt, aber in der ProgressBar tut sich absolut nix.Aufruf:
CProgressDlg prgDlg = new CProgressDlg(); prgDlg.Create( IDD_PRGRS_DLG, this ); prgDlg.InitValuesInDialog( _T("Liste wird erstellt ...") ); prgDlg.ShowWindow(SW_SHOW); prgDlg.UpdateWindow();Bei 'InitValuesInDialog' wird vorerst nur der String in ein Static im Dialog gesetzt. Funktioniert auch. Also Dialog ist da.
Dann soll die Pos in der ProgressBar gesetzt werden. Aufruf:
prgDlg.UpdateProgBar( prgs ); prgDlg.UpdateWindow();Die zugehörige Funktion:
void CProgressDlg::UpdateProgBar(int val) { if( sp >= 1000 ) sp = 0; GetDlgItem(IDC_PROGRESS1)->GetScrollPos( sp ); sp += val; GetDlgItem(IDC_PROGRESS1)->SetScrollPos( sp, true ); GetDlgItem(IDC_PROGRESS1)->Invalidate(); }sp ist eine int Vari aus dem Header.
Woran liegts?
Bitte her mit den Ideen, ich selbst hab keine mehr

grüssle

Edit: VC6

-
Verwende zustäzlich UpdateWindow, oder ersetze Invalidate durch RedrawWndow!
Merke: Invalidate zeichnet nicht neu, sondern vermrekt in dem Fenster, dass es sich neu Zeichnen soll, wenn die Message Loop wieder an die Reihekommt, das tut die aber nihct in Deinem Fall. Deshalb must der den Redraw forcieren.
-
Martin Richter schrieb:
Verwende zustäzlich UpdateWindow, oder ersetze Invalidate durch RedrawWndow!
Merke: Invalidate zeichnet nicht neu, sondern vermrekt in dem Fenster, dass es sich neu Zeichnen soll, wenn die Message Loop wieder an die Reihekommt, das tut die aber nihct in Deinem Fall. Deshalb must der den Redraw forcieren.
prgDlg.UpdateProgBar( prgs ); prgDlg.UpdateWindow();siehe oben.
Habs aber mittlerweile gelöst. Enfach:
SetScrollPos durch SetPos, und
SetScrollRange durch SetRange
ersetzt, und schon funktioniert es so wie es soll.
aber 
Danke trotzdem.
grüssle
