Моя программа копирует файлы в фоновом потоке. Причем сначала подсчитывается общий объем копированных файлов. Диалоговое окно, которое имеет следующую функцию (приводится только обработчик сообщения WM_INITDIALOG, так как там наблюдается описываемый эффект)
BOOL MainPhotoWindow::DropTarget::CopyFileProgressProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
static DropTarget *pDropTarger = NULL;
TCHAR szBuf[32], szBuf1[32];
switch (uMsg)
{
case WM_INITDIALOG:
{
pDropTarger = (DropTarget*)lParam;
// Ждем, пока не закончиться вычисление общего объема копируемых файлов
WaitForSingleObject(pDropTarger->m_CopyParamtrs.hEventTotalSize, INFINITE);
// LARGE_INTEGER m_CopyParamtrs.liTotalSize;
_i64tow(pDropTarger->m_CopyParamtrs.liTotalSize.QuadPart, szBuf, 10);
NUMBERFMT nmbfrm;
nmbfrm.Grouping = 3;
nmbfrm.LeadingZero = 0;
nmbfrm.lpDecimalSep = _T(".");
nmbfrm.NumDigits = 0;
nmbfrm.lpThousandSep = _T(" ");
GetNumberFormat(LOCALE_CUSTOM_DEFAULT, 0, szBuf, &nmbfrm, szBuf1, 32);
_stprintf(szBuf, _T("%s байт"), szBuf1);
SetDlgItemText(hWnd, IDC_STTOTALSIZE, szBuf);
SetTimer(hWnd, IDC_TIMER, 500, NULL);
break;
}
...
default:
{
return FALSE;
}
}
return TRUE;
}
В Debug-версии возникает исключения проверки стека, хотя значения регистра ЦП ESP не меняется. Release-версии работает нормально.
Среда разработки MSVS 2015 C++