Автор
|
Тема: Сообщение при инициализации
|
Susik |
опубликован 27-08-2001 00:51 MSK
Просветите, пожалуйста, в плане сообщений Виндовса. 1) Могут ли приложению посылаться сообщения без создания цикла обработки сообщений? (ну без функции, которая их обрабатывает, а они вроде как сами обрабатываются или не обрабатываются вообще) Если - да, то какие? 2) Какие сообщения посылаются приложению самыми первыми после его запуска? (если там окно создавалось или.... ну я не знаю, что там еще случилось)
|
Kasya
|
опубликован 27-08-2001 04:24 MSK
Когда ты в WinMain создаешь какое-либо окно, ты для него указываешь функцию обработки сообщений и все сообщения посылаються туда. Если тебе в лом писать сам цикл создай диалог через: INT_PTR DialogBox( HINSTANCE hInstance, // handle to module LPCTSTR lpTemplate, // dialog box template HWND hWndParent, // handle to owner window DLGPROC lpDialogFunc // dialog box procedure ); Тогда будешь писать только функцию обработки сообщений - WinMain тогда вообще может быть на 3 строчки, однако это способ только длоя сравнительно простых прог. При создании окна ему посылаеться сообщение WM_CREATE При создани диалога - WM_INITDIALOGВ функции обработки сообщений обрабатвывай те сообщения, которые тебе нужны - для остальных передавай управление винде. Вообщем читай МСДН - там все подробней и понятней
|
Susik
|
опубликован 27-08-2001 13:27 MSK
Спасибо, конечно, за информацию. Но я это уже все знаю (про обработку сообщений в приложении) - в МСДН читал :). Я просто хотел узнать, посылаются ли какие-нить сообщения не для оконных компонентов, а так, чисто для приложения. Я, правда, себе не могу представить, как это, но все же. :) |
purpe
|
опубликован 27-08-2001 13:45 MSK
помоему в винде как минимум регистрируется класс окна для каждого приложения. А иначе как оно будет работать в форточках ? надо ведь сообщения как-то получать.
|
Susik
|
опубликован 27-08-2001 14:50 MSK
Не обязательно регистрировать класс окна - можно работать и без сообщений. Ну типа там прога что-то делает, ей сообщения нафиг не нужны. Ну мож там сервис какой или что-то подобное. Или вирус какой. |
purpe
|
опубликован 27-08-2001 15:24 MSK
ну так если без окна, то это получится консольное приложение, а консольное приложение всё равно является окном :)сервис в любом случае должен обрабатывать сообщения иначе винда просто не сможет его запустить.
|
Susik
|
опубликован 27-08-2001 17:32 MSK
А вот в этом и прикол. :) Допустим, у меня есть прога, в которой есть точка входа (WinMain), и есть там внутри цикл какой-нить. Вывод на экран она не использует - ни оконный, ни косольный - никакой. А из-за цикла она работает сколь угодно долго (но не висит). |
purpe
|
опубликован 27-08-2001 17:37 MSK
значит осталось только выяснить - какое сообщение отправляется системе при вызове WinMain :)
|
Susik
|
опубликован 27-08-2001 19:15 MSK
Точно. :))) |
server_mouse
|
опубликован 27-08-2001 20:31 MSK
Что вы имеете в виду, когда говорите 'отправляется системе'? Зачем её отправлять самой себе сообщение? Думаете хукнуть? |