Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сравнение сообщений виндоус.

299
15 августа 2005 года
3D Bob
885 / / 18.04.2005
Пытаюсь предотвратить закрытие окна.

 
Код:
#include <vcl.h>
#include <windows.h>
......
......
while (GetMessage(&lpMsg,NULL,0,0)) {
    if (lpMsg.message == WM_CLOSE) lpMsg.message=NULL;
    DispatchMessage(&lpMsg);
}

Однако мои старания оказываются безуспешными. И окно нагло берет и закрывается, если нажать к прмеру на крестик.

Единсвенный способ предотвратить конешно закрытие окна.. Это в обработчике событий окна
 
Код:
case WM_CLOSE:
  PostQuitMessage(0);

Убрать этот PostQuiteMessage(0). Да, если я его уберу то все нормально, окно не закрывается, потому что нету кода закрытия. Но я так не хочу, я хочу уничтожить сообщение еще на стадии его получения.


Если же написать

 
Код:
#include <vcl.h>
#include <windows.h>
......
......
while (GetMessage(&lpMsg,NULL,0,0)) {
    if (lpMsg.message == 160)ShowMessage("Двигаем Мышкой по заголовку окна");
    DispatchMessage(&lpMsg);
}

Код срабатывает, и когда мышка оказывается на заголовке, то появляется надпись.
Число 160 узнал опытным путем. Просто в наглую, стал писать
 
Код:
#include <vcl.h>
#include <windows.h>
......
......
while (GetMessage(&lpMsg,NULL,0,0)) {
    ShowMessage(lpMsg.message);
    DispatchMessage(&lpMsg);
}


И еще заметил такую вещь
 
Код:
while (GetMessage(&lpMsg,NULL,0,0)) {
        if (lpMsg.message==161)lpMsg.message=NULL;
        DispatchMessage(&lpMsg);
  }


То обнуляются вообще все сообщения, и окно перестает реагировать вообще на ВСЁ.

Почему так происходит?
243
17 августа 2005 года
pacific_7
1.9K / / 06.09.2004
Маньяк :)
Смотри файл-заголовочники.
Все сообщения объявлены в них. Например:
#define WM_CLOSE 0x0010
Найди директиву в которой объявлено сообщение с кодом 161 (их наверняка будет несколько, тебе надо только WM)и сделай выводы сам - почему у тебя все перестает работать.
488
17 августа 2005 года
Mоngооsе
465 / / 01.04.2005
Нажатие на крестике генерирует сообщение WM_SYSCOMMAND с wParam=SC_CLOSE
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог