Список форумов Шадринский форум -> Программирование -> Общие вопросы программирования -> Как правильно вызвать CreateWindowEx в DLL?
Начать новую тему   Ответить на тему   вывод темы на печать

Как правильно вызвать CreateWindowEx в DLL?

Автор
Сообщение
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


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


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


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


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


Статус: Offline
СообщениеДобавлено: 2005.06.11 18:28.50
Ответить с цитатой
Еще более внимательное изучение показало, что падение программы вызывает не WM_CREATE, а WM_SIZE, неизбежно приходящее после создания окна. Ошибка была чисто моя, при обработке этого сообщения.

Спасибо всем, кто читал эту ветку (30 просмотров!). Факт неполучения ответа заставил меня задуматься, может это я где-то напетлял? Так оно и вышло.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
andy ice
Militärmagazinkatze


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 23385


Статус: Offline
СообщениеДобавлено: 2005.06.11 18:31.52
Ответить с цитатой
moishe писал(а):
Факт неполучения ответа заставил меня задуматься, может это я где-то напетлял?

а может никто ответа не знает? в роге окна не создают Wink
_________________
Ин дер гросен фамилие нихт клювен клац-клац Neutral
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
moishe
Заслуженный писатель


Пол: Пол:Муж.
Зарегистрирован: 25.11.2004
Сообщения: 1668


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

"...И чем я ее только не пробовала..." ((с)Кролики)
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Страница 1 из 1
Начать новую тему   Ответить на тему   вывод темы на печать
Показать сообщения:   
Список форумов Шадринский форум -> Программирование -> Общие вопросы программирования -> Как правильно вызвать CreateWindowEx в DLL?

 
Перейти: 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы можете скачивать файлы