Что такое сообщения Windows?
Материал из DRKB
Что такое сообщения Windows?[править | править код]
Потребности программиста на Delphi практически полностью удовлетворяются возможностями работы с событиями, предоставляемыми VCL. Но при создании серьёзных нестандартных приложений и особенно при разработке компонентов Delphi вам, безусловно потребуется непосредственно обрабатывать сообщения Windows, после чего генерировать события, соответствующие этим сообщениям.
Сообщение - это извещение о некотором имевшем место событии, посылаемое системой Windows в адрес приложения. Любые действия пользователя - щелчок мышью, изменение размеров окна приложения, нажатие клавиши на клавиатуре - вынуждают Windows отправить приложению сообщение, извещающее о том, что же произошло в системе. Сообщение представляет собой определённую запись, объявленную в модуле Windows так:
type TMsg = packed record
HWnd: HWND; // Дескриптор окна-получателя
Message: UINT; // Идентификатор сообщения
WParam: WPARAM; // 32 Бита дополнительной информации
LParam: LPARAM; // Ещё 32 бита дополнительной информации
Time: DWORD; // Время создания сообщения
pt: TPoint; // Положение указателя мыши в момент создания сообщения
end;
Типы сообщений[править | править код]
BM - ButtonMode BN - Button BS - ButtonStyle CB - ComboBox CBN - Combo Box Notifications CBS - ComboBoxStyle EM - EditMessage ES - EditStyle FM - FileManager LB - ListBox LBN - ListBox Notifications LBS - ListBoxStyle MB - MessageButton (Typen) PS - PenStyle SB - ScrollBar SBS - ScrollBarStyle SM - SystemMetrics SPI - SystemParametersInfo WM - WindowMessage WS - WindowStyle
Сообщения кнопок (BM_)[править | править код]
BM_Click - Посылает кнопке сообщение о том, что на ней произведено нажатие кнопки мышки.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
BM_GetCheck - Определяет, является ли селективная кнопка или чекбокс помеченным.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Если селективная кнопка или чекбокс помечен, возвращается ненулевое значение. Иначе, возвращается 0. Для текстовой кнопки всегда возвращается 0.
BM_GetState - Определяет состояние визуальной кнопки при нажатии кнопки мыши или клавиши пробела.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Если кнопка является подсвеченной текстовой кнопкой, на кнопке сфокусирован ввод и нажата кнопка мыши или клавиша пробела, или нажата кнопка мыши, когда куpсоp находится в кнопке, возвращается ненулевое значение. Иначе возвращается 0.
BM_SetCheck - Помечает или удаляет отметку из селективной кнопки или чекбокса.[править | править код]
Для кнопок с двумя состояниями и чекбоксов при нулевом значении WParam отметка (если имеется) удаляется, иначе - добавляется. Для кнопок с тремя состояниями при нулевом значении WParam отметка (если имеется) и затенение (если есть) удаляются.
- WParam: 0 - отметка удаляется, 1 - отметка добавляется, 2 - кнопка затеняется.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
BM_SetState - Изменяет состояние кнопки или чекбокса.[править | править код]
- WParam: 0 - кнопка или чекбокс рисуются нормальным обpазом. В случае ненулевого значения кнопка подсвечивается.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
BM_SetStyle - Изменяет стиль кнопки.[править | править код]
- WParam: Определяет новый стиль кнопки. См. раздел "Стили кнопок (BS_)" в главе 1 "Стили и константы Windows".
- LParam: 0 - кнопка не будет перерисовываться сpазу же. Если значение отлично от нуля и новый стиль кнопки отличается от текущего стиля, то кнопка будет перерисована.
- Возвращаемое значение: Не используется.
Сообщения диалогов (DM_)[править | править код]
DM_GetDefID - Возвращает идентификатор текущей кнопки диалога.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Если текущей кнопки диалога нет, HiWord возвращаемого значения равно нулю; иначе равно DC_HasDefID, а LoWord - идентификатору кнопки.
DM_SetDefID - Устанавливает идентификатор текущей кнопки диалога.[править | править код]
- WParam: новый идентификатор текущей кнопки.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
Сообщения полей ввода (EM_)[править | править код]
EM_CanUndo - Определяет, может ли поле ввода ответить на сообщение EM_Undo.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Если поле ввода может ответить на сообщение EM_Undo, возвращается ненулевое значение; иначе возвращается 0.
EM_EmptyUndoBuffer - Очищает буфер отмены поля ввода.[править | править код]
Посылка полю ввода сообщения WM_SetText или EM_SetHandle вызывает автоматическую очистку буфера отмены.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_FmtLines - Добавление "мягкого" переноса строк в поле ввода при переносе слов.[править | править код]
Это сообщение не влияет на обычную последовательность конца строки CR/LF (возврат каретки, смена строки). В случае ненулевого возвращаемого значения размер текста изменился. Это сообщение относится только к многострочным полям ввода.
- WParam <> 0: строки текста с переносом слов заканчиваются символами CR/CR/LF;
- WParam = 0: любая последовательность CR/CR/LF удаляется из текста.
- LParam: Не используется.
- Возвращаемое значение: Если текст был изменен, возвращается ненулевое значение; иначе возвращается нуль.
EM_GetHandle - Возвращает дескриптор буфера содержимого поля ввода.[править | править код]
Это сообщение может посылаться только полю ввода, которое было создано со стилем DS_LocalEdit.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Дескриптор буфера памяти содержимого (текста) поля ввода.
EM_GetLine - Возвращает одну стpоку из поля ввода.[править | править код]
- WParam: Номеp строки. Нумерация строк в поле ввода начинается с нуля. Для однострочного поля ввода не используется.
- LParam: Указатель на буфер для приема строки. Два байта в начале буфера должны содержать размер буфера (тип WORD). Для ANSI это число байтов, для Unicode это число знаков. Байты в начале буфера будут перезаписаны содержимым строки. Символ конца строки (#0) не добавляется.
- Возвращаемое значение: Фактически переданное в буфер число знаков.
EM_GetLineCount - Возвращает число строк текста в поле ввода.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Число строк текста. Если текст пустой, будет возвращать 1.
EM_GetModify - Возвращает признак модификации поля ввода.[править | править код]
Признак модификации устанавливается, когда текст поля ввода изменен путем ввода нового текста или редактированием существующего, или когда полю ввода посылается сообщение EM_SetModify.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Возвращается признак модификации поля ввода. Ненулевое значение означает, что текст поля ввода изменился, а нуль - нет.
EM_GetPasswordChar - Определяет код символа, скрывающего текст в строке редактирования.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Код символа, если код равен 0, то скрывающего символа нет. Обычно равен 42 - звездочка "*".
EM_GetRect - Получает границы отрисовки поля ввода.[править | править код]
- WParam: Не используется.
- LParam: Указатель на TRect, который примет значения границ.
- Возвращаемое значение: Не используется.
EM_GetSel - Возвращает начальный и конечный индексы выделения текста в поле ввода.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: в LoWord - индекс начала, в HiWord - индекс конца.
EM_LimitText - Установка максимальной длины текста в поле ввода.[править | править код]
- WParam: Задает новое максимальное число символов. В случае нулевого значения длина почти не ограничена.
- LParam: Не используется.
- Возвращаемое значение: В случае ошибки возвращается нуль.
EM_LineFromChar - Возвращает индекс строки поля ввода, для указанного индекса в тексте.[править | править код]
- WParam: Индекс символа в тексте поля ввода (начиная с 0) или -1.
- LParam: Не используется.
- Возвращаемое значение: Если WParam = -1, возвращает индекс строки, содержащей начало выделения текста. Иначе возвращает индекс строки, содержащей индекс символа, указанный в WParam. Индекс строки начинается с 0.
EM_LineIndex - Возвращает индекс начала строки в тексте для указанного индекса строки поля ввода.[править | править код]
- WParam: Индекс строки строки, начиная с 0. Если WParam = -1, то стpока, на которой находится курсор.
- LParam: Не используется.
- Возвращаемое значение: Индекс символа в начале строки многострочного текста.
EM_LineLength - Возвращает длину строки поля ввода, по индексу в тексте.[править | править код]
- WParam: Индекс символа в тексте поля ввода, или -1.
- LParam: Не используется.
- Возвращаемое значение: Если WParam = -1, то возвращается длина строки, на которой в находится курсор. Иначе возвращается длина строки, содержащей символ по индексу из WParam. Длина строки для ANSI в байтах, для Unicode в знаках.
EM_LineScroll - Прокручивает строки поле ввода.[править | править код]
- WParam: Число знаков, прокручиваемых по горизонтали.
- LParam: Число строк, прокручиваемых по вертикали.
- Возвращаемое значение: 0 - однострочное поле ввода, иначе многострочное.
EM_ReplaceSel - Заменяет выделенный текст в поле ввода.[править | править код]
- WParam: 0 - отмена невозможна, иначе допускается отмена.
- LParam: Указатель на строку с завершающим нулем, которая заменит выделенный текст.
- Возвращаемое значение: Не используется.
EM_SetHandle - Устанавливает дескриптор буфера текста поля ввода.[править | править код]
Пеpед установкой нового дескриптора, прежний дескриптор должен быть прочитан с помощью сообщения EM_GetHandle, а затем освобожден с помощью функции LocalFree. После установки дескриптора буфер отмены очищается и признак наличия изменений сбрасывается.
- WParam: Дескриптор буфера памяти, содержащего текст для поля ввода. При необходимости, память перераспределяется автоматически.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_SetModify - Устанавливает признак модификации поля ввода.[править | править код]
- WParam: новое значение признака модификации.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_SetPasswordChar - Устанавливает символ, скрывающий текст в поле ввода.[править | править код]
Для поля ввода, созданного со стилем ES_Password.
- WParam: Код символа, отображаемого вместо текста. Если 0, то текст отображается как есть.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
EM_SetRect - Устанавливает границы отрисовки поля ввода.[править | править код]
Для многострочного поля ввода. Текст будет переформатирован и перерисован.
- WParam: Не используется.
- LParam: Указатель на TRect, содержащий границы отрисовки.
- Возвращаемое значение: Не используется.
EM_SetRectNP - Устанавливает границы отрисовки поля ввода (без перерисовки).[править | править код]
Для многострочного поля ввода. Используйте вместо EM_SetRect, когда текст должен быть отрисован позднее.
- WParam: Не используется.
- LParam: Указатель на TRect, содержащий границы отрисовки.
- Возвращаемое значение: Не используется.
EM_SetSel - Задает границы выделения текста поля ввода.[править | править код]
- WParam: Индекс символа начала выделения.
- LParam: Индекс символа конца выделения.
- Возвращаемое значение: Не используется.
EM_SetTabStops - Устанавливает позиции табуляции поля ввода.[править | править код]
Позиция составляет одну четвертую от текущей базовой единицы ширины диалога, которая может быть получена с помощью функции GetDialogBaseUnits. Это сообщение относится только к многострочным полям ввода.
- WParam: См. описание LParam.
- LParam:
- Если WParam = 0, то позиция табуляции устанавливается через каждые 32 позиции.
- Если WParam = 1, то позиция табуляции устанавливается в каждой кратной LParam позиции.
- В других случаях LParam указывает на целочисленный массив, состоящий из WParam элементов, каждый из которых больше предыдущего и является позицией табуляции.
- Возвращаемое значение: Если были установлены все позиции табуляции, возвращается ненулевое значение. Иначе возвращается 0.
EM_SetWordBreakProc - Задает функцию переноса слов поля ввода.[править | править код]
Стандартная функция переноса слов Windows определяет начало следующего слова как первый непустой символ после ряда пробелов. Это сообщение относится только к многострочным полям ввода.
Функция переноса слов будет описываться следующим обpазом:
function WordBreakFunction(EditText: PChar; CurrentWord: Integer; EditTextCount: Integer): PChar;
Имя WordBreakFunction не является литеpалом, функция может иметь другое имя. Параметры:
- EditText - указывает на текст поля ввода.
- CurrentWord - индекс начала текущего слова в тексте.
- EditTextCount - суммарное число символов в тексте.
Функция переноса слов должна возвращать указатель на символ в начале следующего слова в тексте. Если текущее слово является последним, функция должна возвращать указатель на символ, находящийся сpазу же за последним символом в стpоке.
- WParam: Не используется.
- LParam: Адрес функции переноса слов.
- Возвращаемое значение: Не используется.
EM_Undo - Отменяет последнюю модификацию текста в поле ввода.[править | править код]
Каждое изменение текста в поле ввода записывается в буфер отмены. При нехватке памяти для создания буфера отмены будет возвращена ошибка.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: В случае успешного завершения возвращается ненулевое значение. Иначе возвращается 0 и текст в поле ввода не изменяется.
Сообщения визуального списка ListBox (LB_)[править | править код]
LB_AddString - Добавляет строку к блоку списка.[править | править код]
Если поле списка не отсортировано, строка помещается в конец списка. Если поле списка имеет стиль LBS_OwnerDrawFixed или LBS_OwnerDrawVariable и не имеет стиля LBS_HasString, то LParam является 32-битовым значением, которое запоминается вместо строки, и каждый добавляемый элемент сравнивается с другими элементами один или несколько раз через сообщение WM_CompareItem, посылаемое владельцу поля списка.
- WParam: Не используется.
- LParam: LParam Указатель на добавляемую строку, с завершающим нулем.
- Возвращаемое значение: В случае успешного завершения возвращается индекс добавленной строки; иначе если не хватает памяти для записи строки, возвращается LB_ErrSpace, а если произошла ошибка, возвращается LB_Err.
LB_DeleteString - Удаляет строку из списка.[править | править код]
Если поле списка имеет стиль LBS_OwnerDrawFixed или LBS_OwnerDrawVariable и не имеет стиля LBS_HasString, то соответствующее 32-битовое значение удаляется и владельцу поля списка посылается сообщение WM_DeleteItem.
- WParam: Индекс удаляемого элемента.
- LParam: Не используется.
- Возвращаемое значение: Если WParam является правильным индексом, возвращается количество оставшихся в списке элементов. Иначе возвращается CB_Err.
LB_Dir - Добавляет к списку имена файлов из заданного каталога.[править | править код]
Добавляет к списку каждое имя файла из каталога, соответствующее маске файла и атрибутам файлов DOS.
- WParam: Атрибуты файлов DOS.
- LParam: Указатель на строку маски файла, с завершающим нулем.
- Возвращаемое значение: В случае успешного завершения возвращается индекс последнего элемента в результирующем списке; иначе если не хватает памяти для сохранения элементов, возвращается LB_ErrSpace, или, в случае ошибки, возвращается LB_Err.
LB_FindString - Находит первый элемент списка, соответствующий префиксной строке.[править | править код]
Если поле списка имеет стиль LBS_OwnerDrawFixed или LBS_OwnerDrawVariable и не имеет стиля LBS_HasString, то LParam является 32-битовым значением, которое сравнивается с каждым соответствующим 32-битовым значением в списке.
- WParam: Индекс, с которого должен начинаться поиск. Первым просматриваемым элементом является элемент, следующий после элемента с индексом WParam. Если достигается конец списка, то поиск продолжается с нулевого элемента до тех пор, пока индекс не достигнет значения WParam. Если WParam = -1, то просматривается весь список, начиная с нулевого элемента.
- LParam: Указатель на префиксную строку, с завершающим нулем.
- Возвращаемое значение: В случае успешного завершения возвращается индекс первого совпадающего элемента, иначе возвращается LB_Err.
LB_GetCount - Возвращает число элементов в списке.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Число элементов в списке.
LB_GetCurSel - Возвращает индекс текущего выбранного элемента списка.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Если выбранного элемента нет, возвращается LB_Err; Иначе возвращается индекс текущего выбранного элемента.
LB_GetHorizontalExtent - Возвращает ширину на которую список может быть прокручен по горизонтали.[править | править код]
Только для полей списков, созданных со стилем WS_HScroll.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Возвращается количество позиций, на которое блок списка может быть прокручен по горизонтали.
LB_GetItemData - Возвращает 32-битовое значение, связанное с элементом в блоке списка.[править | править код]
- WParam: Индекс элемента.
- LParam: Не используется.
- Возвращаемое значение: В случае успешного завершения возвращается соответствующее 32-битовое значение. Иначе возвращается LB_Err.
LB_GetItemRect - Получает границу отрисовки элемента списка.[править | править код]
- WParam: Индекс элемента.
- LParam: Указатель на TRect, для приема значений границ отрисовки.
- Возвращаемое значение: В случае ошибки возвращается LB_Err.
LB_GetSel - Возвращает признак выбора элемента списка.[править | править код]
- WParam: Индекс элемента.
- LParam: Не используется.
- Возвращаемое значение: В случае ошибки возвращается LB_Err. Если элемент выбран, возвращается положительное значение; иначе возвращается 0.
LB_GetSelCount - Возвращает число элементов, выбранных в списке.[править | править код]
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Если список с множественным выбором, возвращается число выбранных элементов; иначе возвращается LB_Err.
LB_GetSelItems - Возвращает индексы элементов, выбранных в списке.[править | править код]
- WParam: Определяет максимальное количество индексов элементов.
- LParam: Указатель на массив Integer, достаточно большой для содержания WParam индексов элементов.
- Возвращаемое значение: Если список с множественным выбором, то индексы до WParam выбранных элементов помещаются в массив LParam, а возвращается суммарное число помещенных туда выбранных элементов; иначе возвращается LB_Err.
LB_GetText - Копирует текст элемента списка в заданный буфер.[править | править код]
Если поле списка имеет стиль LBS_OwnerDrawFixed или LBS_OwnerDrawVariable и не имеет стиля LBS_HasString, то 32-битовое значение, связанное с элементом списка, копируется в буфер.
- WParam: Индекс элемента.
- LParam: Указатель на буфер. Буфер должен быть достаточно большим для того, чтобы вмещать строку и завершающий нуль.
- Возвращаемое значение: Не используется.
LB_GetTextLen - Возвращает длину текста элемента списка.[править | править код]
- WParam: Индекс элемента.
- LParam: Не используется.
- Возвращаемое значение: Если WParam определяет верный индекс, то возвращается длина текста элемента с этим индексом; иначе возвращается LB_Err.
LB_GetTopIndex - Возвращает индекс первого видимого элемента списка.[править | править код]
Первоначально первым видимым элементом в списке является нулевой элемент. Если блок списка прокручивается, то верхним может оказаться другой элемент.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Индекс первого видимого элемента.
LB_InsertString - Вставляет строку в список без сортировки.[править | править код]
- WParam: Если -1, то строка добавляется в конец списка. Иначе WParam используется как индекс вставки строки.
- LParam: Указатель на вставляемую строку с завершающим нулем.
- Возвращаемое значение: В случае успешного завершения, возвращается индекс, по которому была вставлена строка; иначе если не хватает памяти для сохранения строки, возвращается LB_ErrSpace, или, в случае ошибки, возвращается LB_Err.
LB_ResetContent - Удаляет все элементы из списка.[править | править код]
Если поле списка имеет стиль LBS_OwnerDrawFixed или LBS_OwnerDrawVariable и не имеет стиля LBS_HasString, то владельцу поля списка для каждого элемента посылается сообщение WM_DeleteItem.
- WParam: Не используется.
- LParam: Не используется.
- Возвращаемое значение: Не используется.
LB_SelectString - Выбирает первый элемент списка, соответствующий префиксной строке.[править | править код]
Если список имеет стиль LBS_OwnerDrawFixed или LBS_OwnerDrawVariable и не имеет стиля LBS_HasString, то LParam является 32-битовым значением, которое сравнивается с каждым соответствующим 32-битовым значением в списке.
- WParam: Индекс, с которого должен начинаться поиск. Первым просматриваемым элементом является элемент, следующий после элемента с индексом WParam. Если достигается конец списка, то поиск продолжается с нулевого элемента до тех пор, пока индекс не достигнет значения WParam. Если WParam = -1, то просматривается весь список, начиная с нулевого элемента.
- LParam: Префиксная строка с завершающим нулем.
- Возвращаемое значение: В случае успешного завершения возвращается индекс первого совпадающего элемента, иначе возвращается LB_Err и текущий выбор не изменяется.
LB_SelItemRange - Выбирает или отменяет выбор диапазона элементов в списке.[править | править код]
Для списков со множественным выбором.
- WParam: Если WParam равен нулю, выбор элементов отменяется; иначе элементы выбираются.
- LParamLo: Индекс начального элемента.
- LParamHi: Индекс конечного элемента.
- Возвращаемое значение: В случае ошибки возвращается LB_Err.
LB_SetColumnWidth - Устанавливает ширину столбца списка.[править | править код]
Для списков, имеющих стиль LBS_MultiColumn.
- WParam: Ширина каждого столбца.
- LParam: Не используется.
LB_SetCurSel - Выбирает элемент списка.[править | править код]
- WParam: Индекс элемента. Если WParam = -1, то выбранного элемента нет.
- LParam: Не используется.
- Возвращаемое значение: Если WParam = -1 или является неверным индексом, возвращается LB_Err; иначе возвращается индекс выбранного элемента.
LB_SetHorizontalExtent - Устанавливает ширину, на которую блок списка может быть прокручен по горизонтали.[править | править код]
Для списков, созданных со стилем WS_HScroll. Горизонтальная полоса прокрутки будет доступна или недоступна в зависимости от того, результирующий участок меньше ширины поля списка или нет.
- WParam: Число позиций, на которое блок списка может быть прокручен по горизонтали.
- LParam: Не используется.
LB_SetItemData - Устанавливает 32-битовое значение, связанное с элементом списка.[править | править код]
- WParam: Индекс элемента.
- LParam: Новое 32-битовое значение, связываемое с элементом.
- Возвращаемое значение: В случае ошибки возвращается LB_Err.
LB_SetSel - Установка или снятие признака выбора элемента в списке.[править | править код]
Для списков с множественным выбором.
- WParam: Если WParam = -0, выбор элемента отменяется; иначе элемент выбирается.
- LParam: Если LParam = -1, это сообщение относится ко всем элементам в блоке списка; иначе для определения используемого элемента используется LParamLo.
- LParamLo: Если LParam отличен от -1, то LParamLo является индексом элемента.
- Возвращаемое значение: В случае ошибки возвращается LB_Err.
LB_SetTabStops - Устанавливает позиции табуляции поля списка.[править | править код]
Текущая позиция табуляции составляет одну четвертую от базовой единицы ширины диалога, которая может быть получена с помощью функции GetDialogBaseUnits. Для списков со множественным выбором.
- WParam: См. LParam.
- LParam:
- Если WParam = 0, то табуляция устанавливается через каждые 2 позиции.
- Если WParam = 1, то табуляция устанавливается в каждой кратной LParam позиции в единицах диалога.
- В других случаях LParam указывает на массив из Integer, состоящий из WParam числа элементов, каждый из которых больше предыдущего и является позицией табуляции.
- Возвращаемое значение: Если были установлены все позиции табуляции, возвращается ненулевое значение; иначе возвращается нуль.
LB_SetTopIndex - Устанавливает индекс первого видимого элемента в списке.[править | править код]
- WParam: Индекс элемента.
- LParam: Не используется.
- Возвращаемое значение: В случае ошибки возвращается LB_Err.
Author: Sergey Bodrov
Source: http://www.realcoding.net/articles/soobshcheniya-windows.html
ID: 02034