[CLOSED]Вопрос знатокам делфи / WinAPI
Т.е.
procedure messageproc(var msg:TMessage{на счет типа параметра не уверен});message LBN_SELCHANGE;
неужели так не работает?
2. А эта конструкция
procedure messageproc(var msg:TMessage{на счет типа параметра не уверен});message LBN_SELCHANGE;в билдере иммет аналог?
В процедуру обработки сообщений родительского окна уведомления LBN_SELCHANGE и др. тоже не проходят

Может надо какой-то стиль окна указать специфический?
1. скорее всего так и есть, но только этот вариант более ... красивый чтоли. Соответствует стилю, в общем.
2. ммм... вот этого не могу сказать точно, по моим представлениям, разница билдера и дельфи - только в языке. Т.е., если в сях, которые использует билдер, есть динамические методы, то это должен быть динамический метод с номером-идентификатором соответствующим номеру сообщения. Впрочем, по идее, должно быть отдельное зарезервированное слово для этого, но прописываются как динамический метод.
Т.е., в Object Pascal есть
procedure bla-bla-bla(.... );dinamic 20;
а есть
procedure bla-bla-bla(.... );message WM_CLOSE;
procedure TCustomListBox.CNCommand(var Message: TWMCommand);
begin
case Message.NotifyCode of
LBN_SELCHANGE:
begin
inherited Changed;
Click;
end;
LBN_DBLCLK: DblClick;
end;
end;
смотрим, что такое TCustomListBox.CNCommand:
TCustomListBox = class(TCustomMultiSelectListControl)Вопросы еще остались?
private
{.........}
procedure CNCommand(var Message: TWMCommand); message CN_COMMAND;
{..........}
end;
В стиле листбокса надо было установить LBS_NOTIFY. Без этого сообщения типа LBN_SELCHANGE не генерятся вообще.
Обработка сообщения может производиться в WndProc. C CNCommand попробую пошаманить, но на нее описалова вообще никакого нету =/.
В любом случае спасибо за советы - по крайней мере я понял, почему нигде не встречается вызовы типа SomeClass.CNCommand

...
void __fastcall CNCommand(TMessage &Message);
...
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CN_COMMAND, TMessage, CNCommand)
END_MESSAGE_MAP(TRichEdit);
В методе CNCommand пишем обработчик события.
Оставить комментарий
Slavaga
Компонент TCustomListBox генерирует событие OnClick, когда получает уведомление LBN_SELCHANGE.Вопрос - каким образом контрол ловит это уведомление?! Уже полдня смотрю исходники и все не могу понять
Единственное, что приходит в голову - это подменять WindowProc родителя и ловить сообщение там, но вариант дурацкий.
В оконную процедуру ListBox'a приходит только LBN_KILLFOCUS и LBN_SETFOCUS.