|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 26, 2003 13:14:18 Где бы посмотреть, что означают коды выдаваемые GetLastError? Проблема в следующем создаю окно ListBox два раза, в первый раз окно создаётся нормально, а во второй CreateWindow возвращает 0, а GetLastError 120(дес.) т.е.78h. Что означает этот код? |
|
|
Дата: Авг 26, 2003 13:38:51 Тебе поможет FormatMessage |
|
|
Дата: Авг 26, 2003 13:58:30 · Поправил: SolidCode Я для своих программ написал такую функцию, чтобы не только себе сообщать о значении ошибки, но чтобы и пользователь знал. Разбери её. Авось поможет. ; ««««««««««««««««««««««««««««««««««««««« .const nEF_KILL equ 1 nEF_GETCODE equ 2 .data fater db "Фатальная ошибка!",13,10,0 apper db "Системная ошибка!",13,10,0 extinf db 13,10,"Расширенная информация:",13,10 db "Код ошибки: %lu (%lXh)",13,10 db "Системное описание ошибки:",13,10 db "%s",0 killapp db 13,10,"Программа будет закрыта.",0 .code align 16 ErrorMsg proc hParentWnd:DWORD,\ lpszMsg:DWORD,\ ;ptr to application defined error message nEFlag:DWORD,\ ;if 0 then no ErrCode and Sys Err Message displayed nMBFlag:DWORD ;the flags to pass to MessageBox LOCAL StrBuf[512]:BYTE ;buffer for the final message LOCAL ExtInfo[512-8]:BYTE ;buffer for extended info LOCAL nErrCode:DWORD ;keep the error code here LOCAL ptrSysErr:DWORD ;ptr to buffer allocated by FormatMessage with FORMAT_MESSAGE_ALLOCATE_BUFFER flag .IF nEFlag & nEF_GETCODE ;if need to have error code, get it with GetLastError invoke GetLastError mov nErrCode,eax xor ecx,ecx lea edx,ptrSysErr ;and get the system description of the error push eax invoke FormatMessage,FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM,ecx,\ eax,ecx,edx,ecx,ecx pop eax invoke wsprintf,addr ExtInfo,offset extinf,eax,eax,ptrSysErr invoke LocalFree,ptrSysErr .ENDIF lea edx,StrBuf .IF nEFlag & nEF_KILL ;do the first line of message push offset fater ;"Fatal Error" .ELSE push offset apper ;"Application Error" .ENDIF push edx call lstrcpy invoke lstrcat,addr StrBuf,lpszMsg ;add to message your own words passed to the function .IF nEFlag & nEF_GETCODE invoke lstrcat,addr StrBuf,addr ExtInfo ;if extended info accuired, add it to the message .ENDIF .IF nEFlag & nEF_KILL invoke lstrcat,addr StrBuf,offset killapp ;if KILL flag set, inform user about it .ENDIF invoke MessageBox,hParentWnd,addr StrBuf,offset AppName,nMBFlag ;show the message box .IF nEFlag & nEF_KILL ;if KILL flag set, free resources and exit application ;ExitApp simply frees the resources occupied by the program call ExitApp invoke ExitProcess,0 .ENDIF ret ErrorMsg endp |
|
|
Дата: Авг 26, 2003 14:14:18 Всем большое спасибо. Ошибку нашёл глупость конечно, забыл после Класса окна ноль зарезервировать, что бы чтрока нулём заканчивалась. |
|
|
Дата: Авг 26, 2003 14:23:38 В аттаче тулзень ErrorShow. Или: include ReportLastError.asm Где нужно показать описание последней ошибки: invoke ReportLastError Процедура сохраняет все регистры и флаги. 775690126__LastError.rar |
|
|
Дата: Авг 26, 2003 16:59:46 |
|
|
Дата: Сен 1, 2004 18:34:26 Добрый день. Подскажите пожалуйста какой 32-битн. код должна вернуть функция GetLastError(), чтобы его расшифровка находилась в netmsg.dll. Спасибо. |
|
|
Дата: Сен 1, 2004 19:13:01 Если надо один раз узнать что за ошибка, то можно и без программирования. net helpmsg <номер> Например: E:\>net helpmsg 2 The system cannot find the file specified. |
|
|
Дата: Сен 1, 2004 19:57:39 гм, а ErrorLookup из комплекта MSVS уже отменили чтоли? |
|
|
Дата: Сен 2, 2004 10:40:33 flankerx Конечно, отменили. Вместе с winerror.h из PSDK :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.073 |