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

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

Поиск контрола [D6, Win2k]


arcad ©   (2002-10-11 15:20:00) 

Уважаемые мастера.
Есть в дельфях такая функция
function FindControl(Handle: HWnd): TWinControl;
Подскажите как сделать тоже самое с помощь WinAPI, плииизз.


gamlet   (2002-10-13 02:33:00) [1]

если тебе нужно текст записать в ТЕдит то это можно сделать так:

var mytext:String;
..............
SendMessage(Handle{окна Едита или св-во Handle TEdit"a}, WM_SETTEXT, 0, PChar(mytext));

вобщем посмотри хелп по WM_SETTEXT и WM_GETTEXT....
удачи......................


Song   (2002-10-11 22:19:00) [2]

2arcad © (11.10.02 16:48)
Вы поймите что ни TEdit ни его свойства Text ни одного его метода в АПИ нет. Это VCL. Вы же хотите АПИ? Значит забудьте о классе TEdit как о таковом. Все программы в ОС работают через сообщения. Например, аналог VCLного TEdit.Text в АПИ - это WM_SETTEXT и т.д.


Толик   (2002-10-11 17:51:00) [3]

>>как мне этот самый FindControl(ThisHandle) сделать только с помошью WinAPI?
НИКАК!!!
WnApi НИЧЕГО не знает о ни об объектах VCL, ни о Делфях, ни о Вас как программисте. Вообще ничего. TWinControl и его наследники являвляются просто красивой оболочкой вокруг объектов Windows. Все объекты в Виндах характеризуются уникальным дескриптором. называемым handle. Вот по нему можно искать объекты с помощью WinApi, но и результат поиска буде тоже объект WinApi, а не VCL!!!


arcad   (2002-10-11 16:48:00) [4]


> Song © (11.10.02 16:40)
> Объект идентифицируется хэндлом, т.е. другими словами считайте
> что хэндл это и есть объект.

Ну тупой я люди, извините.
Повторяю как мне объет-то сам получить, точнее доступ к его полям и методам?
Я ж не могу написать TEdit(ThisHandle).Text:="";
Надо же сам объек-то получить,
например так TEdit(FindControl(ThisHandle)).Text:="";
Вот я и спрашиваю как мне этот самый FindControl(ThisHandle) сделать только с помошью WinAPI?




arcad   (2002-10-11 16:40:00) [5]


> ZrenBy © (11.10.02 16:27)
> >>мне фунция WinAPI GetFocus() возвращает хендл контрола.
> >>Как мне с помощью того же WinAPI определить что это за
> контрол
> >>и если это TEdit, выполнить над что нужно?
>
> Это твой вопрос ?

Да мой.


Song   (2002-10-11 16:40:00) [6]

Объект идентифицируется хэндлом, т.е. другими словами считайте что хэндл это и есть объект.


ZrenBy   (2002-10-11 16:27:00) [7]

>>мне фунция WinAPI GetFocus() возвращает хендл контрола.
>>Как мне с помощью того же WinAPI определить что это за контрол
>>и если это TEdit, выполнить над что нужно?

Это твой вопрос ?


arcad   (2002-10-11 16:21:00) [8]


> ZrenBy © (11.10.02 16:11)
> GetClassName

Ну имя получу, а сам объек-то как? Или я чего-то недопонимаю, что скорее всего?


ZrenBy   (2002-10-11 16:11:00) [9]

GetClassName


arcad   (2002-10-11 16:08:00) [10]


> MBo ©

Нужно получить по хендлу сам контрол.


arcad   (2002-10-11 16:01:00) [11]


> MBo © (11.10.02 15:56)
> >как сделать тоже самое
> Что сделать????
> Handle однозначно определяет окно.

Сорри, неправильно сформулировал вопрос. Как говорится на любой вопрос - любой ответ.


arcad   (2002-10-11 15:59:00) [12]


>k
> о, кстати, мы родились с тобой в 1 день, только я в 80-м
> году:)

Очень рад за нас!
Возвращаясь к теме вопроса, мне фунция WinAPI GetFocus() возвращает хендл контрола. Как мне с помощью того же WinAPI определить что это за контрол и если это TEdit, выполнить над что нужно?


ZrenBy   (2002-10-11 15:57:00) [13]

может GetNextDlgGroupItem или подобные подойдут ?


MBo   (2002-10-11 15:56:00) [14]

>как сделать тоже самое
Что сделать????
Handle однозначно определяет окно.


k   (2002-10-11 15:35:00) [15]

WinAPI ничего не знает о TWinControl, и сделать тоже самое ему не подсилу....

о, кстати, мы родились с тобой в 1 день, только я в 80-м году:)


Наверх

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