Что такое сообщения 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