Обращение к окну, зная его хэндл
От: curt_russel  
Дата: 27.10.04 07:28
Оценка:
Уважаемые!
Подскажите, пожалуйста, как, зная хэндл окна, изменять его свойства, например, его положение на экране?
Думаю, что это очевидно, но никак не могу найти как это сделать. Прочитал в хелпе, что поменять свойства окна можно только удалив старое и создав новое окно с другими свойствами. Так ли это? Если да, то как обратиться к окну (удалить), зная его хэндл?

Есть еще и второй вопрос. Но сначала предисловие.
Задача такая: нужно передвигать все дочерние окна родительского окна при перемещении последнего по экрану.
Я запоминаю в vector хэндлы всех дочерних окон (они создаются динамически в неопеределенном заранее количестве), а потом при перемещении родительского окна хочу менять координаты всех дочерних окон, беря их хэндлы из vector'а. Это наверно выглядит коряво. Но это первое, что пришло на ум. Хотелось сделать как в JavaScript'e, где окно знает кол-во всех дочерних элементов каждого типа (будь то Label или ListBox и т.д.). Но в Билдере (пишу на нем) такую штуку не знаю. Может подскажите идею как красивее сделать?!

В общем еще раз. Задача такая: нужно передвигать все дочерние окна (немодальные естесьно), перемещая родительское окно. Причем желательно перемещать их в момент удержания кнопки мыши, а не после ее отпускания.

Спасибо.....
Re: Обращение к окну, зная его хэндл
От: Dimonka Верблюд  
Дата: 27.10.04 07:34
Оценка: +1
Здравствуйте, curt_russel, Вы писали:

_>Подскажите, пожалуйста, как, зная хэндл окна, изменять его свойства, например, его положение на экране?


MoveWindow();
Re: Обращение к окну, зная его хэндл
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 28.10.04 01:09
Оценка:
Hello curt_russel, you wrote:

> Уважаемые!

> Подскажите, пожалуйста, как, зная хэндл окна, изменять его свойства,
> например, его положение на экране?

Вам нужно добраться до соответсвующего класса?
Тогда ищем в Screen.
Иначе смотрим справку по работе с окнами в MSDN.

> Прочитал в хелпе, что поменять свойства окна можно только удалив старое

> и создав новое окно с другими свойствами. Так ли это?

Нет.

> Если да, то как обратиться к окну (удалить), зная его хэндл?


SendMessage, SetWindowLong, PostMessage, и т.д.

> В общем еще раз. Задача такая: нужно передвигать все дочерние окна

> (немодальные естесьно), перемещая родительское окно. Причем желательно
> перемещать их в момент удержания кнопки мыши, а не после ее отпускания.

Обрабатываем событие перемещения главного окна и двигаем дочерние окна как
нам вздумается.
Заводить вектор не нужно. Окно знает про своих детей (есть соответсвующее
свойство у формы)

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9 gamma
Re: Обращение к окну, зная его хэндл
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 28.10.04 01:09
Оценка:
Hello curt_russel, you wrote:

> Уважаемые!

> Подскажите, пожалуйста, как, зная хэндл окна, изменять его свойства,
> например, его положение на экране?

Вам нужно добраться до соответсвующего класса?
Тогда ищем в Screen.
Иначе смотрим справку по работе с окнами в MSDN.

> Прочитал в хелпе, что поменять свойства окна можно только удалив старое

> и создав новое окно с другими свойствами. Так ли это?

Нет.

> Если да, то как обратиться к окну (удалить), зная его хэндл?


SendMessage, SetWindowLong, PostMessage, и т.д.

> В общем еще раз. Задача такая: нужно передвигать все дочерние окна

> (немодальные естесьно), перемещая родительское окно. Причем желательно
> перемещать их в момент удержания кнопки мыши, а не после ее отпускания.

Обрабатываем событие перемещения главного окна и двигаем дочерние окна как
нам вздумается.
Заводить вектор не нужно. Окно знает про своих детей (есть соответсвующее
свойство у формы)

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9 gamma
Re: Обращение к окну, зная его хэндл
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 28.10.04 01:09
Оценка:
Hello curt_russel, you wrote:

> Уважаемые!

> Подскажите, пожалуйста, как, зная хэндл окна, изменять его свойства,
> например, его положение на экране?

Вам нужно добраться до соответсвующего класса?
Тогда ищем в Screen.
Иначе смотрим справку по работе с окнами в MSDN.

> Прочитал в хелпе, что поменять свойства окна можно только удалив старое

> и создав новое окно с другими свойствами. Так ли это?

Нет.

> Если да, то как обратиться к окну (удалить), зная его хэндл?


SendMessage, SetWindowLong, PostMessage, и т.д.

> В общем еще раз. Задача такая: нужно передвигать все дочерние окна

> (немодальные естесьно), перемещая родительское окно. Причем желательно
> перемещать их в момент удержания кнопки мыши, а не после ее отпускания.

Обрабатываем событие перемещения главного окна и двигаем дочерние окна как
нам вздумается.
Заводить вектор не нужно. Окно знает про своих детей (есть соответсвующее
свойство у формы)

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9 gamma
Re: Обращение к окну, зная его хэндл
От: JazzzMaster Россия  
Дата: 28.10.04 01:22
Оценка:
Здравствуйте, curt_russel, Вы писали:

_>Уважаемые!

_>Подскажите, пожалуйста, как, зная хэндл окна, изменять его свойства, например, его положение на экране?
_>Думаю, что это очевидно, но никак не могу найти как это сделать. Прочитал в хелпе, что поменять свойства окна можно только удалив старое и создав новое окно с другими свойствами. Так ли это? Если да, то как обратиться к окну (удалить), зная его хэндл?

_>Есть еще и второй вопрос. Но сначала предисловие.

_>Задача такая: нужно передвигать все дочерние окна родительского окна при перемещении последнего по экрану.
_>Я запоминаю в vector хэндлы всех дочерних окон (они создаются динамически в неопеределенном заранее количестве), а потом при перемещении родительского окна хочу менять координаты всех дочерних окон, беря их хэндлы из vector'а. Это наверно выглядит коряво. Но это первое, что пришло на ум. Хотелось сделать как в JavaScript'e, где окно знает кол-во всех дочерних элементов каждого типа (будь то Label или ListBox и т.д.). Но в Билдере (пишу на нем) такую штуку не знаю. Может подскажите идею как красивее сделать?!

_>В общем еще раз. Задача такая: нужно передвигать все дочерние окна (немодальные естесьно), перемещая родительское окно. Причем желательно перемещать их в момент удержания кнопки мыши, а не после ее отпускания.


_>Спасибо.....


SetWindowPos(), дочерние окна будут двигаться вместе с родителем.
... << RSDN@Home 1.1.3 stable >>
Re: Обращение к окну, зная его хэндл
От: Jack128  
Дата: 29.10.04 19:47
Оценка:
Здравствуйте, curt_russel, Вы писали:
Тут много про разные API функции написали,но в принципе можно обойтись малой кровью, если это окно создано с помощью VCL. Тогда можно получить указатель на WinControl и работать с этим окном как с обычной формой. см FindControl.
Re: Обращение к окну, зная его хэндл
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 31.10.04 13:56
Оценка:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows.asp

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.