Странное поведение Dubug-версии кода
От: Melamed Россия  
Дата: 21.05.20 16:56
Оценка:
Моя программа копирует файлы в фоновом потоке. Причем сначала подсчитывается общий объем копированных файлов. Диалоговое окно, которое имеет следующую функцию (приводится только обработчик сообщения 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++
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.