Проблема с вызовом диалогового окна
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 01.02.17 07:13
Оценка:
В моей программе в файле MyDialog1.cpp я написал:

CSolutionDialog  solutionDialog(this);
solutionDialog(iterations,sigma0,calcedx,calcedy,calcedz,calcedVx,calcedVy,calcedVz,calceddeltax,calceddeltay,calceddeltaz,calceddeltaVx,calceddeltaVy,calceddeltaVz);
solutionDialog.DoModal();


В отладчике у меня выскакивает файл wincore.cpp и в нём функция DefWindowProc :

LRESULT CWnd::DefWindowProc(UINT nMsg, WPARAm wParam, LPARAM lParam)
{
    if (m_pfnSuper!=NULL)
        return ::CallWindowProc(m_pfnSuper,m_hWnd,wParam,lParam);
    WNDPROC  pfnWndProc;
    if ((pfnWndProc=*GetSuperWndProcAddr())==NULL)
        return ::DefWindowProc(m_hWnd,nMsg,wParam,lParam);
    else
        return ::CallWindowProc(pfnWndProc,m_hWnd,nMsg,wParam,lParam);
}


Остановка в файле wincore.cpp в функции DefWindowProc происходит на строке

return ::CallWindowProc(m_pfnSuper,m_hWnd,wParam,lParam);


При этом выскакивает окно с сообщением:

Необработанное исключение по адресу 0x3030302E в myprogram.exe: 0xC0000005:
Access violation (параметры: 0x00000008)


При попытке нажать на кнопку "Продолжить" в этом окне ничего не происходит (что один раз, что несколько раз)--приходится нажимать на кнопку "Прервать".

Но самое интересное--когда я в отладчике делаю точки останова внутри функций, у меня всё нормально работает. Также у меня всё нормально работает, если я удаляю строку

solutionDialog(iterations,sigma0,calcedx,calcedy,calcedz,calcedVx,calcedVy,calcedVz,calceddeltax,calceddeltay,calceddeltaz,calceddeltaVx,calceddeltaVy,calceddeltaVz);


то есть если остаются две строки:

CSolutionDialog  solutionDialog(this);
solutionDialog.DoModal();


В чём причина этого? Как мне исправить эту ошибку--чтобы у меня всегда появлялся диалог solutionDialog ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.