Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перехват сообщения WM_COPY у TCombobox - не работает [D7, WinXP]


allrussia ©   (2010-05-22 20:15:00) 


function NewMemoProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall;
begin
if (uMsg = WM_COPY) then
чего-то делаем..
end;

...form1.create...
h:= Combobox1.Handle;
SetWindowLong(h,GWL_USERDATA,SetWindowLong(h, GWL_WNDPROC, LPARAM(@NewMemoProc)))


Точно такой же код прекрасно работает для TMemo и TEdit

В MSDN написано,   This message has no effect when sent to a combo box with the CBS_DROPDOWNLIST style.

ставлю csSimple или другие - в равно не работает
что не так делаю ? Спасибо.


allrussia   (2010-05-23 10:54:00) [1]

все разобрался, спасибо

надо было строку добавить здесь

procedure TForm1.FormCreate(Sender: TObject);
var h: hwnd;
 cbbInfo: TComboBoxInfo;
begin
cbbInfo.cbSize:= sizeof(TCOMBOBOXINFO);
getcomboboxinfo(ComboBox1.Handle, cbbInfo);
h:= cbbInfo.hwndItem;
SetWindowLong(h,GWL_USERDATA,SetWindowLong(h, GWL_WNDPROC, LPARAM(@NewMemoProc)))
end;


allrussia   (2010-05-23 01:21:00) [2]

Спасибо большое, но только не получается почему-то!

procedure TForm1.FormCreate(Sender: TObject);
var h: hwnd;
  cbbInfo: TComboBoxInfo;
begin
getcomboboxinfo(ComboBox1.Handle, cbbInfo);
h:= cbbInfo.hwndItem;
SetWindowLong(h,GWL_USERDATA,SetWindowLong(h, GWL_WNDPROC, LPARAM(@NewMemoProc)))
end;


Зато все это натолкнуло меня на другую мысль.
Если жать комбинацию клавиш - сообщение не перехватывется. А если послать программно WM_PASTE - все работает! Но не с этим кодом, а с предыдущим... :)


Игорь Шевченко   (2010-05-22 21:56:00) [3]


> что не так делаю ?


не у того окна ловишь. у ComboBox с csSimple такие сообщения отрабатывает его дочернее окно Edit

RTFM: GetComboBoxInfo hwndItem


Наверх

Титульная страница Поиск, карта сайта Написать письмо