Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Вниз

COMBOBOX 


MJH   (2002-02-03 13:44) [0]

Кто-нибудь работал с сабжем через винАПИ?????
уже крышу рвёт :(((((
а все из-за колбэк функции....
если кто-нить разбирался то плиз скиньте на мыло mail_666mrt@mailru.com



Иван Шихалев   (2002-02-03 14:31) [1]

В чем проблема? Какая, нафиг, callback-функция?



MJH   (2002-02-03 17:45) [2]

для обработки событий дочерних окон - выпадающий список, эдит



Иван Шихалев   (2002-02-03 17:50) [3]

Не понял... Ты для него обертку что ли пишешь?



MJH   (2002-02-03 18:19) [4]

ты внатуре не понял. Я СОЗДАЛ КОМБОБОКС
CreateWindow("COMBOBOX","",CBS_DROPDOWN or WS_CHILD or WS_BORDER or WS_VSCROLL or CBS_HASSTRINGS or CBS_AUTOHSCROLL, и т.д.)
затем чтоб это уродство работало, нужно задать его ребёночку обработчик путём
SetWindowLong(f_list_hnd, GWL_WNDPROC, cardinal(@listproc));
где f_list_hnd:=GetWindow(f_handle, GW_CHILD);
ВНИМАНИЕ - ВОПРОС:
мы в ListProc пишем свой обработчик для каждого события (WM_KEYUP WM_MOUSEUP и т.д.) и передаём результат главному окну или что?

зы: Иван Шихалев, если ты про компоненты мне рассказываешь - то не надо смешить меня



Иван Шихалев   (2002-02-03 18:40) [5]

Вот ты как... Оригинально. А про компоненты я и не пытался рассказывать.

Ну да, обрабатываешь все сообщения и передаешь родительскому окну сообщения от ComboBox"а. А также обеспечиваешь прорисовку и прочие прелести. В целом - то же самое, что написать новый оконный класс, полностью эквивалентный стандартному. Вот только в чем у тебя проблема (и зачем тебе такие фокусы), я так и не понял.

Вообще-то проще, наверное, сделать subclassing. Там CallWindowProc есть.



Suntechnic   (2002-02-03 18:41) [6]

Во время подмены оконной процедуры Combobox-а ( ф-ция SetWindowLong) сохрани адрес старой процедуры обработки. Затем в новой процедуре обрабатывай сообщения, что тебе нужны и вызывай старую процедур путём CallWindowProc.



MJH   (2002-02-04 01:43) [7]

разбираемся пока с этим...
ещё вопрос: список выпадает на высоту комбобокса - хоть это 100, хоть скажем 14 - выпадает только одна полоска. как с этим бороться?




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.021 c
1-9506            lipskiy               2002-03-21 01:33  2002.04.04  
Как получить текстовое сообщение ошибки, имея ее код?


1-9567            VBill                 2002-03-19 16:55  2002.04.04  
Как узнать какая программа загрузила мою DLL?


6-9589            iXANiA                2002-01-22 15:02  2002.04.04  
Именованный канал (named pipe)


1-9580            Serj-klg              2002-03-23 21:57  2002.04.04  
Траблы с принтерами и QReport


1-9505            KaPaT                 2002-03-22 23:49  2002.04.04  
Дочерние окна