Форум: "WinAPI";
Текущий архив: 2002.05.09;
Скачать: [xml.tar.bz2];
ВнизКак можно получить 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.05.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c