Aufgabe:
Benachrichtigung, dass eine möglicherweise länger dauernde Operation mit den Objekten durchgeführt wird.
Aktivierung:
Immer aktiviert
Parameter:
lParam zeigt auf eine scLlMeterInfo-Struktur:
_nSize: Größe der Struktur
_hWnd: Handle des List & Label Hauptfensters
_nTotal: Gesamtzahl der Objekte
_nCurrent: gegenwärtig bearbeitetes Objekt
_nJob: Aufgabe, mit der List & Label beschäftigt ist:
Aufgabe |
Bedeutung |
LL_METERJOB_SAVE |
Speichern der Objekte |
LL_METERJOB_LOAD |
Laden der Objekte |
LL_METERJOB_CONSISTENCYCHECK |
Konsistenzprüfung der Objektliste |
Hinweise:
Durch diesen Callback kann z. B. ein Fortschrittsbalken angezeigt werden. Der Prozentwert einer Fortschrittsanzeige berechnet sich über MulDiv(100, _nCurrent, _nTotal).
Beispiel:
// Die Funktionen WaitDlg... müssen durch eigene Funktionen
// ersetzt werden
switch (wParam)
{
case
LL_INFO_METER:
{
scLlMeterInfo* pMI = (scLlMeterInfo*)lParam;
static hJob hMeterJob = 0;
if
(pMI->_nSize == sizeof(scLlMeterInfo)) // is actual
version?
{
// do I have to do
something?
if
(pMI->_nTotal >
0)
{
// get
parent window handle for
Dialog
HWND hWndParent = pMI->_hWnd ? pMI->_hWnd :
hwndMyFrame;
if (pMI->_nCurrent ==
0)
{
// open meter bar with
0%!
hMeterJob = WaitDlgStart(hWndParent, T("wait a
moment"),
0);
}
else
{
//
end:
if (pMI->_nCurrent ==
pMI->_nTotal)
{
// end meter
bar!
WaitDlgEnd(hMeterJob);
}
else
// somewhere in between 0 and
100
{
// set meter value to MulDiv(100,_ nCurrent,
_nTotal)
WaitDlgSetText(hMeterJob, T("still
working..."),
MulDiv(100, pMI->_nCurrent,
pMI->_nTotal));
}
}
}
}
}
break;
}