Здравствуйте, RussianFellow, Вы писали:
Есть небольшой шанс, что стек вызовов поможет понять проблему.
А так, что-то ты там в своем перегруженном операторе () напортачил, а что именно никто кроме тебя знать не может
В моей программе в файле 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 ?
1613 г. = 2024 г.
Здравствуйте, RussianFellow, Вы писали:
RF>...всё нормально работает, если я удаляю строку
RF>RF>solutionDialog(iterations,sigma0,calcedx,calcedy,calcedz,calcedVx,calcedVy,calcedVz,calceddeltax,calceddeltay,calceddeltaz,calceddeltaVx,calceddeltaVy,calceddeltaVz);
RF>
RF>В чём причина этого?
Параметров маловато?
Всем спасибо, но проблему решил я сам--в списке параметров я передавал неправильные значения (что-то типа +61 -ого порядка). Когда с этими значениями я разобрался, то диалог стал нормально вызываться.
1613 г. = 2024 г.