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

 WASM Phorum —› WASM.WIN32 —› Программа без класса окна

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


Дата: Май 29, 2003 00:25:28

Возможно ли такое - создание (и работа!) программы, ьез создания класса окна, его регистрации, создания оконной процедуры и т.п.
Точнее, я понимаю что можно, но вот что делать например с следующей вещью - требуется создать иконку в трее, иконка требует хэндла окна для передачи сообщений. Так что в этом случае можно сделать? Можно каким-то образом создать без указания хэндла, но с указанием процедуры обработки?

Я думаю наверняка, над этим вопросом кто-нибудь задумывался... А если такая тема уже неоднократно поднималась, я извиниюсь заранее, на форум редко захожу (1 раз в год :)


Дата: Май 29, 2003 01:13:09

Конечно, можно. Надо создать окно, однако его не рисовать (ShowWindow не вызывать).


Дата: Май 29, 2003 03:56:18

Можно использовать диалоговое окно как основное, но оконную процедуру создать таки придётся.


Дата: Май 29, 2003 12:44:44

>Надо создать окно, однако его не рисовать
См. внимательно на мой пост выше, я как раз и имел в виду, что сделать _без_ этого.

>Можно использовать диалоговое окно как основное
В смысле? Какое диалоговое окно? Можно пояснить поподробнее?

>оконную процедуру создать таки придётся
Да мне хоть как, главное что бы можно было отловить сообщения от иконки в трее.


Дата: Май 29, 2003 18:46:49

Создать что-то имеющеее оконный хендл без очереди сообщений невозможно в принципе. Насколько японял тебе это и не нужно.
Бери Урок 23. "Иконка в system tray" by Iczelion. На сайте есть перевод. И чуть-чуть его подправь.


Дата: Май 29, 2003 20:51:00

Не понятно я что ли объясняю проблему? Не пойму...

Как создавать иконку в трее я знаю. В частности при создании иконки структуре NOTIFYICONDATA не помню конкретно какому полю, нужно присвоить хэндл окна, которое будет получать сообщения от этой иконки. Так вот, как мне не создавая окна, не записывая хэндл окна в вышеописанную структуру, "задать" адрес процедуры, которая будет вызываться по сообщению от иконки?

PS: чувствую, я не понимаю работы Windows :) И задача относится к

>невозможно в принципе


Дата: Май 29, 2003 22:47:16

Вы принципиально не хотите создавать окно?
Чем вас не устраивает использование невидимого окна?


Дата: Май 30, 2003 02:47:28

Хуки еще можно попробовать... Не уверен, что получится, правда.

http://www.rsdn.ru/article/?baseserv/winhooks.xml


Дата: Май 30, 2003 12:00:09

[ acp: Так вот, как мне не создавая окна, не записывая хэндл окна в вышеописанную структуру, "задать" адрес процедуры, которая будет вызываться по сообщению от иконки? ]

Думаю, что никак. Ты, по-моему, усложняешь себе задачу. Ну будет болтаться еще одно невидимое окно, из тысячи уже болтающихся в системе, и что тут плохого? Или это чисто академический интерес?


Дата: Май 30, 2003 14:05:09

Да. Интерес чисто академический. Хочется посмотреть что будет кодом, уменьшится ли? Будет ли потреблять меньше ресурсов?

И кажется я решил эту проблему - мне её решение навеяло сообщение Дмитрия про хуки.
1. Создаю иконку в трее при этом указывая ей хэндл какого-либо фиктивного окна (т.е. нахожу любое)
2. Ставлю хук например на WH_CALLWNDPROC и вперёд...

Попробую в ближайшее время...


Дата: Май 30, 2003 21:20:03

Хочется посмотреть что будет кодом, уменьшится ли?
А обработчик хука не компактнее обработчика сообщений пустого окна...
Будет ли потреблять меньше ресурсов?
Хук и меньше ресурсов?! Шутите?


Дата: Май 30, 2003 22:15:49

>Хук и меньше ресурсов?! Шутите?
Да. :) Я уже понял, что это нерационально.


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