Создайте рабочий поток в основной программе и установите процедуру обратного вызова, которая выполняет обработку файла.
Эта процедура также будет рассчитывать процент выполнения. Всякий раз, когда этот процент изменяется, отправьте
значение в виде сообщения окна, которое будет перехвачено основным потоком и обновит элемент управления индикатора выполнения.
Вы можете определить внутренние сообщения приложения, такие как #define MSG_PROGRESS_VALUE (WM_USER + 1)
.
Редактировать: образец,
#define MSG_PROGRESS_VALUE (WM_USER + 1)
#define MSG_WORKER_DONE (WM_USER + 2)
...
DWORD WINAPI jobroutine(LPVOID lpParameter) {
while (TRUE) {
// process files ...
// calculate new percent
if (newpercent != oldpercent) {
PostMessage(mainwnd, MSG_PROGRESS_VALUE, 0, newpercent);
oldpercent = newpercent;
}
...
}
PostMessage(mainwnd, MSG_WORKER_DONE, 0, 0);
return 0;
}
...
MainWndProc(...) {
switch (uMsg) {
...
case MSG_PROGRESS_VALUE:
// update progress bar value (lParam)
break;
...
}
...
WinMain(...) {
HANDLE worker = CreateThread(NULL, 0, jobroutine, NULL, NULL, NULL);
...
// Start classic windows message loop
...
}