|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Окт 16, 2003 03:37:27 Попытался передать ATOM который вернула функция RegisterClass в качестве имени класса в функцию CreateWindowEx. В 2000 это нормально сработало, а в XP вылезло сообщение о недопустимой операции. Ошибка возникла где-то в недрах DLL-ки. Когда я запустил программу из под отладчика, ошибка не появилась. Кто-нибудь может объяснить столь странное явление? PS: Что-то баги нынче отладчиков стали бояться ... и как их таких ловить? |
|
|
Дата: Окт 16, 2003 03:46:49 · Поправил: Quantum Атом - 16-битное значение. Может, стоит обнулить высшие 16 бит на всякий случай? |
|
|
Дата: Окт 16, 2003 12:51:58 Black_mirror: какой отладчик? 1) попробуй в windbg 2) у тебя скорее всего многопоточное приложение - а посему программа выполняется "несколько по-другому" -из-за того, что один из потоков дико тормозит. 3) попробуй windbg и в окне с мессагами посмотри на наличие эксепшенов. 4) кинь сюда код - посмотрим где косяк. Но не может быть, чтоб вот так вот просто гуя валилась. |
|
|
Дата: Окт 16, 2003 18:58:59 Black_mirror Quantum правильно говорит - обязательно обнуляй верхнее слово атома под XP, сам недавно на эти грабли напоролся :) |
|
|
Дата: Окт 16, 2003 23:33:12 Всем спасибо! Похоже дело действительно в том, что нужно обнулять старшее слово. rst Вчера это был просто каркас приложения. Вызывались только RegisterClass,CreateWindowEx. Плюс цикл обработки сообщений: GetMessage,TranslateMessage,DispatchMessage. Функция окна при получении WM_DESTROY вызывала PostQuitMessage, а все остальные передавала в DefWindowProc. При запуске из под TD или Olly ошибка не появлялась. А сегодня, после добавления кода, программа стала работать и без отладчика. |
|
|
Дата: Окт 17, 2003 01:34:25 В OllyDbg присутствует такой баг, когда отлаживаемая им программа работает нормально, а без него она вылетает с ошибкой. Сам пару раз на такое напарывался, с чем это связано не знаю. |
|
|
Дата: Окт 17, 2003 04:22:45 SK: windbg rulez -) хотя поклонники TD больше тяготеют к Olly 2 all: говорила мне бабка - обнуляй все дефолт - параметры перед вызовом функций winapi |
|
|
Дата: Окт 17, 2003 18:19:59 санкс, только-только сам собирался постить проблему. Аналогичные грабли. ОСь-XP RUS+UKR langpack. |
|
|
Дата: Окт 22, 2003 19:31:32 мля. Вроде-бы проблема решилась таким кодом: invoke RegisterClassEx,addr class_struct movzx eax,ax invoke CreateWindowEx,0,eax,... Но вот сегодня прога вылетела. Точно в том же месте, что и раньше. Значит трабла много глубже :( |
|
|
Дата: Окт 23, 2003 14:14:29 А на ошибки проверка есть? Может, класс не зарегистрировался? У меня все работает. Я надеюсь, ты убираешь в стиле флаг CS_GLOBALCLASS? |
|
|
Дата: Окт 23, 2003 15:42:11 masquer А на ошибки проверка есть? Есть. Класс 100% регистрируется. Стиль: (CS_HREDRAW or CS_VREDRAW). Больше ошибка не появлялась, хотя я проект приблизительно 150 раз еще запускал. Но то что ошибка была именно в CreateWindowEx и именно из-за атома, который возвращает RegisterClassEx - 100%. Гарантирую. ну что ж, спишем на очередные виндозные глюки? :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.094 |