JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

Оконные сообщения Windows

Windows API
Оконные сообщения Windows предназначены для приема оконной процедурой визуальных компонентов. Их идентификаторы начинаются с префикса WM_ (Window Message).

Список оконных сообщений
Сообщение Событие
WM_ACTIVATE окно активируется или деактивируется
WM_ACTIVATEAPP окно, принадлежащее другой прикладной программе, собирается активироваться
WM_APPCOMMAND произошло некоторое событие в прикладной программе
WM_ASKCBFORMATNAME запpос у окна-владельца буфеpа выpезанного изобpажения имени фоpмата данных
WM_CANCELJOURNAL пользователь отменяет ведущийся протокол действий прикладной программы
WM_CANCELMODE диалоговое окно или окно сообщений отображаются на экране
WM_CAPTURECHANGED окно теряет захват мыши
WM_CHANGECBCHAIN окно удаляется из цепочки окон просмотра буфера обмена
WM_CHANGEUISTATE произошло изменение состояния интерфейса пользователя
WM_CHAR введен символ, либо Backspace, Enter, Escape или Tab
WM_CHARTOITEM запpос у окна-владельца блока списка, что он должен делать в ответ на сообщение WM_CHAR
WM_CHILDACTIVATE пользователь щелкнул мышью по области заголовка окна или окно активировано, перемещено или установлено по размеру
WM_CLEAR удаление текущего выбоpа в окне редактирования
WM_CLIPBOARDUPDATE изменено содержимое буфера обмена
WM_CLOSE окно или прикладная программа завершают работу
WM_COMMAND выбран пункт меню, либо элемент управления послал уведомительное сообщение родительскому окну, либо нажата клавиша акселератора
WM_COMPACTING необходимо освободить максимум занятой памяти
WM_COMPAREITEM необходимо сравнить два элемента списка или комбинированного списка
WM_CONTEXTMENU необходимо отобразить на экране контекстное меню
WM_COPY необходимо скопировать текущее выделение в буфер обмена в формате CF_TEXT
WM_COPYDATA происходит пересылка данных между окнами
WM_CREATE создается новое окно
WM_CTLCOLORBTN кнопка собирается рисовать свою рабочую область
WM_CTLCOLORDLG запрос дескриптора кисти для закрашивания фона диалогового окна
WM_CTLCOLOREDIT запрос дескриптора кисти для закрашивания фона поля редактирования
WM_CTLCOLORLISTBOX запрос дескриптора кисти для закрашивания фона списка
WM_CTLCOLORMSGBOX запрос дескриптора кисти для закрашивания фона окна сообщения
WM_CTLCOLORSCROLLBAR запрос дескриптора кисти для закрашивания фона полосы прокрутки
WM_CTLCOLORSTATIC запрос дескриптора кисти для закрашивания фона статического элемента управления
WM_CUT необходимо вырезать текущее выделение в буфер обмена в формате CF_TEXT
WM_DEADCHAR введен пассивный символ
WM_DELETEITEM удален элемент списка
WM_DESTROY окно разрушается
WM_DESTROYCLIPBOARD буфер обмена очищается
WM_DEVMODECHANGE изменился режим работы устройства
WM_DISPLAYCHANGE изменился режим работы дисплея
WM_DRAWCLIPBOARD изменилось содержимое буфера обмена
WM_DRAWITEM изменился внешний вид кнопки, списка, комбинированного списка или меню
WM_DROPFILES произошло перетаскивание файла в окно
WM_ENABLE изменилось состояние окна
WM_ENDSESSION текущий сеанс работы системы завершается
WM_ENTERIDLE очередь сообщений окна опустела
WM_ENTERMENULOOP вход в модальный цикл меню
WM_ENTERSIZEMOVE вход в режим установки размеров или перемещения окна
WM_ERASEBKGND очищается фон окна
WM_EXITMENULOOP выход из модального цикла меню
WM_EXITSIZEMOVE выход из режима установки размеров или перемещения окна
WM_FONTCHANGE в системе установлен или удален шрифт
WM_GETDLGCODE запрос элементу управления на обработку клавиш перемещения и клавиши Tab
WM_GETFONT запрос дескриптора шрифта
WM_GETHOTKEY запрос "горячей" клавиши
WM_GETICON запрос дескриптора пиктограммы, связанной с окном
WM_GETMINMAXINFO размер или позиция окна собираются измениться
WM_GETOBJECT запрос дескриптора объекта
WM_GETTEXT запрос текста в окне
WM_GETTEXTLENGTH запрос длины текста в окне
WM_HELP нажата клавиша F1
WM_HOTKEY нажата "горячая" клавиша
WM_HSCROLL изменилась позиция ползунка горизонтальной полосы прокрутки
WM_HSCROLLCLIPBOARD изменилась позиция ползунка горизонтальной полосы прокрутки окна просмотра буфера обмена
WM_ICONERASEBKGND очищается фон пиктограммы
WM_INITDIALOG инициализация диалога
WM_INITMENU инициализация меню
WM_INITMENUPOPUP инициализация popup-меню или подменю
WM_INPUT произошел ввод строки в устройство ввода
WM_INPUTLANGCHANGE произошло изменение языка ввода
WM_INPUTLANGCHANGEREQUEST запрос на изменение языка ввода
WM_KEYDOWN нажата клавиша на клавиатуре
WM_KEYUP отжата клавиша на клавиатуре
WM_KILLFOCUS окно потеряло фокус
WM_LBUTTONDBLCLK произошел двойной клик левой кнопкой мыши в клиентской области окна
WM_LBUTTONDOWN нажата левая кнопка мыши в клиентской области окна
WM_LBUTTONUP отжата левая кнопка мыши в клиентской области окна
WM_MBUTTONDBLCLK произошел двойной клик средней кнопкой мыши в клиентской области окна
WM_MBUTTONDOWN нажата средняя кнопка мыши в клиентской области окна
WM_MBUTTONUP отжата средняя кнопка мыши в клиентской области окна
WM_MEASUREITEM запрос характеристик пункта меню
WM_MENUCHAR нажата клавиша клавиатуры, не соответствующая никакому пункту меню
WM_MENUCOMMAND сделан выбор из меню
WM_MENUDRAG выполнено перетаскивание пункта меню
WM_MENUGETOBJECT курсор мыши вошел в пункт меню или перемещен от центра пункта меню к его вершине или основанию
WM_MENURBUTTONUP отжата правая кнопка мыши, когда курсор находится на пункте меню
WM_MENUSELECT сделан выбор из меню
WM_MOUSEACTIVATE произошел клик мышью в неактивном окне
WM_MOUSEHOVER курсор мыши завис над клиентской областью окна
WM_MOUSEHWHEEL произошла прокрутка горизонтального колеса мыши
WM_MOUSELEAVE курсор мыши покинул клиентскую область окна
WM_MOUSEMOVE курсор мыши переместился в клиентской области окна
WM_MOUSEWHEEL произошла прокрутка вертикального колеса мыши
WM_MOVE произошло изменение позиции окна
WM_MOVING окно собирается переместиться в новую позицию
WM_NCACTIVATE необходимо изменить неклиентскую область окна
WM_NCCALCSIZE необходимо вычислить размер и позицию клиентской области окна
WM_NCCREATE происходит создание неклиентской области окна
WM_NCDESTROY происходит разрушение неклиентской области окна
WM_NCHITTEST курсор мыши вошел в неклиентскую область окна
WM_NCLBUTTONDBLCLK произошел двойной клик левой кнопкой мыши в неклиентской области окна
WM_NCLBUTTONDOWN нажата левая кнопка мыши в неклиентской области окна
WM_NCLBUTTONUP отжата левая кнопка мыши в неклиентской области окна
WM_NCMBUTTONDBLCLK произошел двойной клик средней кнопкой мыши в неклиентской области окна
WM_NCMBUTTONDOWN нажата средняя кнопка мыши в неклиентской области окна
WM_NCMBUTTONUP отжата средняя кнопка мыши в неклиентской области окна
WM_NCMOUSEHOVER курсор мыши завис над неклиентской областью окна
WM_NCMOUSELEAVE курсор мыши покинул неклиентскую область окна
WM_NCMOUSEMOVE курсор мыши переместился в неклиентской области окна
WM_NCPAINT необходимо обновить неклиентскую область окна
WM_NCRBUTTONDBLCLK произошел двойной клик правой кнопкой мыши в неклиентской области окна
WM_NCRBUTTONDOWN нажата правая кнопка мыши в неклиентской области окна
WM_NCRBUTTONUP отжата правая кнопка мыши в неклиентской области окна
WM_NCXBUTTONDBLCLK произошел двойной клик любой Х-кнопкой мыши в неклиентской области окна
WM_NCXBUTTONDOWN нажата любая Х-кнопка мыши в неклиентской области окна
WM_NCXBUTTONUP отжата любая Х-кнопка мыши в неклиентской области окна
WM_NEXTDLGCTL произошло перемещение фокуса ввода к следующему элементу диалогового окна
WM_NEXTMENU происходит переключение между горизонтальным и системным меню
WM_NOTIFY пришло сообщение от дочернего элемента управления
WM_NULL ничего не произошло
WM_PAINT необходимо обновить клиентскую область окна
WM_PAINTCLIPBOARD необходимо обновить клиентскую область окна буфера обмена
WM_PAINTICON необходимо обновить собственную пиктограмму
WM_PALETTECHANGED произошло изменение системной цветовой палитры
WM_PALETTEISCHANGING запрос на изменение системной палитры цветов
WM_PARENTNOTIFY дочернее окно создается или разрушается, либо произошел клик мышью в дочернем окне
WM_PASTE необходимо вставить содержимое буфера обмена
WM_POWERBROADCAST произошло изменение в состоянии питания системы
WM_PRINT необходимо отрисовать окно в контексте переданного устройства
WM_PRINTCLIENT необходимо отрисовать клиентскую область окна в контексте переданного устройства
WM_QUERYDRAGICON запрос дескриптора пиктограммы для перетаскивания
WM_QUERYENDSESSION запрос на завершение текущего сеанса работы системы
WM_QUERYNEWPALETTE запрос на изменение системной цветовой палитры
WM_QUERYOPEN запрос на восстановление размеров и позиции окна
WM_QUERYUISTATE запрос на получение данных об интерфейсе пользователя
WM_QUIT окно готово к разрушению
WM_RBUTTONDBLCLK произошел двойной клик правой кнопкой мыши в клиентской области окна
WM_RBUTTONDOWN нажата правая кнопка мыши в клиентской области окна
WM_RBUTTONUP отжата правая кнопка мыши в клиентской области окна
WM_SETCURSOR произошло перемещение курсора мыши
WM_SETFOCUS произошло изменение фокуса ввода
WM_SETFONT произошло изменение шрифта
WM_SETHOTKEY окну назначена "горячая" клавиша
WM_SETICON произошло изменение пиктограммы окна
WM_SETREDRAW произошло изменение флага пеpеpисовки окна
WM_SETTEXT произошло изменение текста в окне
WM_SETTINGCHANGE произошло изменение системных установок
WM_SHOWWINDOW окно собирается изменить состояние видимости
WM_SIZE произошло изменение размеров окна
WM_SIZECLIPBOARD произошло изменение размеров окна просмотра буфера обмена
WM_SIZING размеры окна собираются измениться
WM_SPOOLERSTATUS произошло добавление или удаление задания в очеpедь администpатоpа печати
WM_STYLECHANGED произошло изменение стиля окна
WM_STYLECHANGING стиль окна собирается измениться
WM_SYSCHAR введен системный символ
WM_SYSCOLORCHANGE произошло изменение системных цветов
WM_SYSCOMMAND произошел выбор из системного меню окна, либо нажаты его кнопки минимизации или максимизации
WM_SYSDEADCHAR введен системный пассивный символ
WM_SYSKEYDOWN нажата системная клавиша на клавиатуре
WM_SYSKEYUP отжата системная клавиша на клавиатуре
WM_THEMECHANGED произошло изменение темы оформления
WM_TIMECHANGE произошло изменение системного времени
WM_TIMER изменилось состояние таймера
WM_UNDO необходимо отменить изменение буфера обмена в формате CF_TEXT
WM_UNICHAR введен UNICODE-символ, либо Backspace, Enter, Escape или Tab
WM_UNINITMENUPOPUP popup-меню или подменю разрушается
WM_UPDATEUISTATE необходимо обновить состояние интерфейса пользователя
WM_USERCHANGED пользователь вошел или вышел из системы
WM_VSCROLL изменилась позиция ползунка вертикальной полосы прокрутки
WM_VSCROLLCLIPBOARD изменилась позиция ползунка вертикальной полосы прокрутки окна просмотра буфера обмена
WM_WINDOWPOSCHANGED произошло изменение размера, позиции или места в Z-последовательности окна
WM_WINDOWPOSCHANGING размер, позиция или место в Z-последовательности окна собираются измениться
WM_XBUTTONDBLCLK произошел двойной клик любой Х-кнопкой мыши в клиентской области окна
WM_XBUTTONDOWN нажата любая Х-кнопка мыши в клиентской области окна
WM_XBUTTONUP отжата любая Х-кнопка мыши в клиентской области окна
Пример (JS+)
// Главная форма
frm=new TForm();
frm.Caption="JS+ - Оконные сообщения Windows";
frm.Width =600;
frm.Height=450;
frm.WindowProc=frm_WndProc;

// Кнопка
btn=new TButton(frm);
btn.Caption="Добавить Help";
btn.Width=btn.TextWidth(btn.Caption)+20;
btn.Left=(frm.ClientWidth -btn.Width )/2;
btn.Top =(frm.ClientHeight-btn.Height)/2;
btn.OnClick=btn_Click;

frm.ShowModal();

// Обработчик события OnClick кнопки
function btn_Click(btn)
{
  var Btn_Str,New_Style;
  var Old_Style=GetWindowLong(frm.Handle,GWL_EXSTYLE);

  switch (btn.numTag) {
    case 0: New_Style=Old_Style | WS_EX_CONTEXTHELP;
            Btn_Str="Убрать Help";
            break;

    case 1: New_Style=Old_Style & ~WS_EX_CONTEXTHELP;
            Btn_Str="Добавить Help";
  }

  SetWindowLong(frm.Handle,GWL_EXSTYLE,New_Style);
  btn.Caption=Btn_Str;
  btn.numTag=1-btn.numTag;
}

// Оконная процедура главной формы
function frm_WndProc(Sender,Msg,wParam,lParam)
{
  var hWnd=Sender.Handle;

  switch (Msg) {
    case WM_STYLECHANGED:
    alert("Изменился стиль окна главной формы");
    break;

    case WM_CLOSE:
    alert("Окно главной формы закрывается!");
    break;

    case WM_DESTROY:
    SetWindowLong(hWnd,GWL_WNDPROC,Sender.OldWndProc);
  }

  return CallWindowProc(Sender.OldWndProc,hWnd,Msg,wParam,lParam);
}
Примечание
Прикладные программы могут использовать собственные сообщения с номерами от WM_USER до WM_APP-1.
Совместимость
Windows API
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/WinAPI/WinMsg.htm
© 2024,