· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Dialogs in 9x & Xp

Посл.отвђт Сообщенiе


Дата: Июл 26, 2004 23:38:13

Я в недоумении...
Моя прога состоит из трех частей:
1. Ключевой ехе [1]
2. Хооки в длл [2]
3. Интерфейс в отдельной длл [3]
Интерфей вызывается из [1] путем подгрузки длл и динамической линковки ссылок...
В принцепе все работает, в ХР ... Т.е. параметры и все мелочи учтены, диалоги появляются, переключаются и удаляются без каких либо сообщении об ошибках... Надо отметить что все диалоги в виде ресурсов, вызываю их через CreateDialogParam... Есть обыкновенные и на базе класса... Как я уже сказал - все работает...

Но совсем по-другому обстоят дела в 98, неговоря уже о 95.. [1] создает невидимое окно, которое является родителем для все остальных окон (это окно НИКОГДА не появляется - так и было задумано...) [3] содержит одно главное окно и еще 3 других второстепенных. Когда я пытаюсь отобразить второстепенные окна из [3], при этом родителем является окно [1] - у двух ничего не выходит, оно просто не появляется на экране..., а одно работает, как ни в чем не бывало. Но во всех случаях все хэндлы в порядке!!! Если же я любое второстепенное окно, но родителем устанавливая главное окно из [3], то все работает. Вышесказанное касается Win98.

А в 95 вообще никаких окон не появляется ... Но тем не менее ошибок от винды недождался.

Помогите, плиз !!!
Направьте заблудшего студента на путь истинный ;)...


Дата: Июл 27, 2004 06:44:16

Сам долго мучался с 98. =( Ты под дебаггером смотрел?


Дата: Июл 27, 2004 10:10:17

Нет, под дебаггером не смотрел, я использую VKDebug макросы для печати переменных...

Поправка: в 95 просто нет одной библиотеки, поэтому длл не грузится, и окна не появляются... Но с 98 - это не проблема.


Дата: Июл 27, 2004 12:49:44

lazari
Кинь хоть часть сорцов, а то так бесполезно о чем то говорить.


Дата: Июл 28, 2004 15:59:04

Ура!!! С диалогами разобрался сам, но все равно спасибо тем, кто хотел помочь.
Если кому интересно, вот как я зделал:
1. Диалоги в ресурсах.
2. Они на базе своих классов, т.е. указан класс каждого в ресурсе...
3. Класс регистрируется обычным способом: RegisterClass...
4. Можно строить дилог при помощи DialogBoxParam... or CreateDialogParam...
5. Надо обратить внимание на соообщения. Теперь вместо WM_INITDIALOG посылается WM_CREATE и в этот момент контролы еще не созданы, поэтому инициализироваться не могут... Я делаю так:
.if uMsg == WM_CREATE
...
invoke PostMessage,hWnd,MY_INITDIALOG,0,0
...
.elseif uMsg == MY_INITDIALOG
"то что должно быть в WM_INITDIALOG"
invoke ShowWindow...
6. Если ипользуешь DialogBoxParam..., то надо в WM_CLOSE вызывать EndDialog...., а если используешь CreateDialogParam..., то надо DestroyWindow...

Вот кажется и все основные моменты, а там уже дело техники.
Да, и еще: адрес функции задается в WNDCLASSEX.
Удачи!


Дата: Июл 28, 2004 20:06:21

Приятно когда люди сами разбираются в своих ошибках.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067