Как правильно вызвать CreateWindowEx в DLL?
moishe Заслуженный писатель

Пол: 
Зарегистрирован: 25.11.2004
Сообщения: 1668
Статус: Offline
Делаю DLL, в которой в одной из экспортируемых функций вызываю CreateWindowEx, там же RegisterClassEx. К win32 приложению (ЕХЕ) прилинковываю свою DLL через import library (которую делаю implib'ом). Функция из DLL вызывается, но когда доходит до CreateWindowEx, программа "выполняет недопустимую операцию". |
moishe Заслуженный писатель

Пол: 
Зарегистрирован: 25.11.2004
Сообщения: 1668
Статус: Offline
Дальнейшие раскопки показали, что ошибка возникает в момент возврата из оконной процедуры после обработки сообщения WM_CREATE. Оконная процедура определена в DLL. Класс окна определен с параметром CS_GLOBALCLASS. При этом не имеет значения, вызывается CreateWindow из DLL или из EXE, использующего данную DLL. Управление попадает в оконную процедуру, но вернуться оттуда почему-то не может. В чем тут дело? |
moishe Заслуженный писатель

Пол: 
Зарегистрирован: 25.11.2004
Сообщения: 1668
Статус: Offline
Еще более внимательное изучение показало, что падение программы вызывает не WM_CREATE, а WM_SIZE, неизбежно приходящее после создания окна. Ошибка была чисто моя, при обработке этого сообщения.
Спасибо всем, кто читал эту ветку (30 просмотров!). Факт неполучения ответа заставил меня задуматься, может это я где-то напетлял? Так оно и вышло. |
andy ice Militärmagazinkatze

Пол: 
Зарегистрирован: 25.11.2004
Сообщения: 23385
Статус: Offline
moishe писал(а): Факт неполучения ответа заставил меня задуматься, может это я где-то напетлял?
а может никто ответа не знает? в роге окна не создают  _________________ Ин дер гросен фамилие нихт клювен клац-клац  |
moishe Заслуженный писатель

Пол: 
Зарегистрирован: 25.11.2004
Сообщения: 1668
Статус: Offline
Вот именно, что НИКТО не знает. Кто заходит в "Вопросы программирования"? Скорее всего, люди знающие. Ну хотя бы 2-3 человека. Так что я рассчитывал на то, что если есть какие-то особенности создания окна в DLL, то кто-то что-то должен был слышать. Меня еще сбила с толку туманная фраза в справке по WinAPI, в которой утверждалось, что при вызове некоторых функций из DLL (например, CreateWindow - так и написали!) ее надо линковать каким-то специальным образом, а подробнее об этом рекомендовали смотреть в "руководстве по вашему Developer's Toolkit", которого у меня как раз и нет.
"...И чем я ее только не пробовала..." ((с)Кролики) |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы можете скачивать файлы
|