|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 5, 2004 08:46:23 Здравствуйте, Вот возникла проблема с тем, что код работает нормально в Win2k, а под Win98 выдает ексепшн 0D. При инициализации управление передается в диалог, функция первый раз отрабатывает, а потом ексепшн. Посмотрите пожалуйста что тут не так: dlgproc proc call deltaproc deltaproc: pop ebp sub ebp, offset deltaproc jmp stackprepare hDlg dd 0 uMsg dd 0 wParam dd 0 lParam dd 0 szTextOK db 32 dup (0) TextOKSize DD 0 szHeaderOK db "Read OK",0 hwndEditOK dd 0 stackprepare: push esi mov esi, ebp push ebp mov ebp, esp push dword ptr ds:[ebp+0Ch] pop dword ptr ds:[esi+hDlg] push dword ptr ds:[ebp+10h] pop dword ptr ds:[esi+uMsg] push dword ptr ds:[ebp+14h] pop dword ptr ds:[esi+wParam] push dword ptr ds:[ebp+18h] pop dword ptr ds:[esi+lParam] pop ebp pop esi procstart: .IF (dword ptr ds:[ebp+uMsg] == WM_COMMAND) mov eax, dword ptr ds:[ebp+wParam] and eax, 0000FFFFh .IF (eax == IDOK) ; если была нажата кнопка, то получить дескриптор эдитбокса push ID_EDIT1 mov eax, dword ptr ds:[ebp+hDlg] push eax call dword ptr ds:[ebp+_GetDlgItem] mov dword ptr ds:[ebp+hwndEditOK], eax ; получить текст из эдитбокса push 32 mov eax, ebp add eax, offset szTextOK push eax push dword ptr ds:[ebp+hwndEditOK] call dword ptr ds:[ebp+_GetWindowTextA] mov dword ptr ds:[ebp+TextOKSize], eax ; вывести MessageBox с текстом из эдитбокса push MB_ICONINFORMATION mov eax, ebp add eax, offset szHeaderOK push eax mov eax, ebp add eax, offset szTextOK push eax push 0 call dword ptr ds:[ebp+_MessageBoxA] ; завершить работу диалога push 0 push dword ptr ds:[ebp+hDlg] call dword ptr ds:[ebp+_EndDialog] jmp quit .ELSE jmp quit .ENDIF .ELSE jmp quit .ENDIF quit: xor eax,eax retn 10h dlgproc endp |
|
|
Дата: Окт 5, 2004 09:27:48 Я думаю, что неплохо бы сохранить ebp в начале процедуры, а затем восстановить в конце. З.Ы. Можно поинтересоваться к чему такой космический код: call deltaproc deltaproc: pop ebp sub ebp, offset deltaproc <=== ebp=0 ???????? jmp stackprepare |
|
|
Дата: Окт 5, 2004 11:14:04 |
|
|
Дата: Окт 5, 2004 15:01:29 Kvazimoda при том, что это адресно независимый обработчик сообщений диалога. Сохранение не помогает, помог переход на другой индексный регистр ESI |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.037 |