Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
1-26127
Sheva
2002-04-24 10:59
2002.05.09
Invalid Pointer Operation.


1-26062
Александр_30
2002-04-25 09:20
2002.05.09
получение значений массива из функции


14-26248
LazorenkoX
2002-04-01 21:58
2002.05.09
Win 2K


14-26269
Sergey13
2002-03-28 11:09
2002.05.09
Ваш


3-26033
BillyJeans
2002-04-16 16:55
2002.05.09
как обойтись без <b>BDE</b>?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский