Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.09;
Скачать: CL | DM;

Вниз

Как можно получить handle listbox-а который в чужом окне   Найти похожие ветки 

 
SergeySA   (2002-03-04 19:15) [0]

Как можно получить handle listbox-а который в чужом окне?
Вроде послать в чужое окно сообщение listbox-у можно,
а как его handle взять?
Вообще надо в чужом окне в listbox
добавить свои строки, это реально ?


 
Юрий Зотов ©   (2002-03-04 20:46) [1]

Вопрос повторялся раз 20, сделайте поиск. А вообще вариантов много - см. FindWindowEx, GetWindow, GetTopWindow, GetNewxWindow, EnumChildWindows.


 
SergeySA   (2002-03-05 10:15) [2]

Да причём тут GetWindow, GetTopWindow как взять
хэндл окна я знаю я хочу послать сообщение
listbox-y который в окне сообщение скажем
LB_INSERTSTRING
чтоб там строка вставилась. Это как сделать?
или хэндл окна = хэндлу listbox-а ?

вот из API докум.
An application sends an LB_INSERTSTRING message to insert a string into a list box
LB_INSERTSTRING
wParam = (WPARAM) index; // item index
lParam = (LPARAM) (LPCTSTR) lpsz; // address of string to insert


 
Song ©   (2002-03-05 10:45) [3]

Загрузи WinSight и проследи иеархию объектов. Среди них найди тот контрол, который принимает такие сообщение т.е. тот кто отвечает за вывод этих данных. Потом последовательно доберись до этого контрола GetWindow и передавай ему сообщение. Не надо думать, что если ты передаешь сообщению приложению (application), то тут же нужный тебе элемент сделает то что ты хочешь, ты должен получить HWND не приложения, а того элемента в приложении.

P.S. Чего ты споришь с Юрием Зотовым, думаешь снизойдёт до того, чтобы тебе объяснить всё по шагам? :)))


 
Fellomena   (2002-03-05 11:10) [4]

Уф...
FindWindowEx(FindWindow(0, "Caption окна, в котором твой ListBox, или что другое, лежит"), 0, "Имя типа того окна, handle которого тебе нужен", nil);

Пример:

FindWindowEx(FindWindow(0, "Test1"), 0, "Button", nil);

Вернёт handle кнопки, расположенной в окне с Caption-ом "Test1"


 
Юрий Зотов ©   (2002-03-05 13:00) [5]

По шагам объяснять действительно не буду. И снисхождение тут ни при чем. Просто чтобы что-то понять, человек должен пройти путь сам (а других вариантов и нет).

Но еще одну подсказку сделаю.

> или хэндл окна = хэндлу listbox-а ?

Всегда, когда Вы хотите отправить сообщение какому-то (любому!) окну, то надо указывать хэндл именно этого окна (а как иначе?). В данном случае Вы отправляете сообщение окну ListBox"а, значит и хэндл надо указывать именно этого ListBox"а.

Теперь понятно, при чем тут GetWindow и пр.? При том, чтобы найти хэндл дочернего окна - того самого ListBox"а.


 
SergeySA   (2002-03-06 15:55) [6]

Ну понятно, понятно. Работает. Спасибо всем.
Согласен, что для того чтобы что-то понять, человек должен
поразмышлять сам. До всего сам не дойдёшь. И не надо всё
подробно объяснять. Достаточто явного намёка. А мне говорят
смотри FindWindowEx. Теперь то ясно зачем. Но сразу это было
слишком уж недостаточно. Трудно дойти когда в описании API
описано достаточно много функций, которые требуют параметр
control handle,оно ясно как день, что если посылаешь сообщение
то нужно указать кому. А FindWindow вернёт хэндл окна. А тут
явно нужн другой хэндл. Просто я не мог дойти, что FindWindowEx
вернёт хэндл контрола. Я документацию читаю, а там написано

FindWindowEx
The FindWindowEx function retrieves the handle to a window
whose class name and window name match the specified
strings. The function searches child windows,
beginning with the one following
the given child window.


Я три дня лопатил документы пытаясь найти ф-цию,
которая вернула бы хэндл контрола.
Только вот конкретно этого не написано.
И надоело уже искать, вот и спросил.Само понятно объяснил
Fellomena Написал меньше всех а пользы больше. Сразу дошло. Прямо сразило. Просто и ясно.


 
Alx2 ©   (2002-03-06 16:09) [7]

>Fellomena Написал
:)


 
Виктор Щербаков ©   (2002-03-06 16:20) [8]

>Fellomena Написал
Вот так с незарегистрированными никами бывает! :0)


 
SergeySA   (2002-03-06 16:22) [9]

А что такое? Fellomena - она ?


 
Юрий Зотов ©   (2002-03-06 16:25) [10]

> ... А мне говорят смотри FindWindowEx. Теперь то ясно зачем. Но сразу это было слишком уж недостаточно.
> ... Просто я не мог дойти, что FindWindowEx вернёт хэндл контрола. Я документацию читаю, а там написано
> ... The function searches child windows...

То есть, прямо сказано - child windows. Разве этого недостаточно?


 
Alx2 ©   (2002-03-06 16:25) [11]

Угу (правда, не проверял в реальности)


 
Alx2 ©   (2002-03-06 16:30) [12]

>Юрий Зотов © (06.03.02 16:25)
Сорри. Мое сообщение Alx2 © (06.03.02 16:25) касается сообщения SergeySA (06.03.02 16:22)


 
SergeySA   (2002-03-06 16:43) [13]

Юрию Зотову
Ну я просто перевёл child windows с английского
не верно, как MDI Child. Ну и решил что это
MDI окна имеются в виду.
Бывает... У меня вся работа стала с этими
listbox-ами. До меня программу написали и для
листбоксов кнопок SAVE и LOAD списков не сделали.
Исходников нет. А раз в месяц туда надо
по 100-200 записей руками вводить и
после обработки выводить другие в файл. Тоже руками.
Ну я долепил на ASM-е прямо в программу свой код, для
чтения-записи, но согласитесь это изврат.


 
Fellomena   (2002-03-06 18:50) [14]

Мда... это сильно, подумать что Fellomena - это ОН ;)
Ну спасибо 8)


 
SoftOne ©   (2002-03-07 02:17) [15]

2 Fellomena (06.03.02 18:50)
А почему "!Ну спасибо 8)"?
Будь я женщиной, написал бы "Сам дурак 20 раз." :))))!



Страницы: 1 вся ветка

Текущий архив: 2002.05.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
14-26239
Лёша
2002-03-21 01:12
2002.05.09
---|Ветка была без названия|---


3-26017
AlexeyA
2002-04-15 12:59
2002.05.09
IBDataset


3-25989
Rub
2002-04-15 15:44
2002.05.09
Народ, че то мне дебагер не показывает строку исходника при ошибк


1-26064
UserL
2002-04-25 12:28
2002.05.09
Проблемма в следующем


1-26157
Oleg_er
2002-04-25 08:13
2002.05.09
Поверх других окон