- Код: Выделить всё
Public Function winProc(ByVal hwnd As Long _
, ByVal uMsg As Long, ByVal wparam As Long _
, ByVal lparam As Long) As Long
' On Error Resume Next
Select Case EbMode
Case 1 'IDE в режиме запуска
If IsBadCodePtr(origAddr) Then
'сюда ни разу не заходили, значит дохнем не от этого
Put #fLog , ,"указатель уже умер" & vbcrlf
MsgBox "дохлый указатель"
winProc = DefWindowProc(hwnd, uMsg, wparam, lparam)
Else
' пересылаем всё обратно в проетк
winProc = CallWindowProc(origAddr, hwnd, uMsg, wparam, lparam)
End If
Case 2 'IDE в режиме паузы
winProc = DefWindowProc(hwnd, uMsg, wparam, lparam)
Case Else 'case 0' нас остaновили или просто завершили работу
Put #fLog , ,"нас убили End-ом или кнопкой" & vbcrlf
winProc = DefWindowProc(hwnd, uMsg, wparam, lparam)
Call SetWindowLong(hwnd, GWL_WNDPROC, oldProc)
End Select
End Function
В общем-то всё работает нормально: можно останавливать проект кнопкой, можно приостанавливать кнопкой и stop-ом, можно обрабатывать ошибки и смотреть пошагово...
Единственное, что так и не получается - проект дохнет-таки по End-у в коде (по кнопке из тулбара - не дохнет!).
Причем, при End-е в проекте библиотека отрабатывает нормально: и class_terminate наступает, и субклассинг снимается, а проект всё равно дохнет...
Подскажите, из-за чего и как побороть?