редактор форм
От: Аноним  
Дата: 02.11.01 04:26
Оценка:
Здравствуйте!
Вот решил написать редактор форм(на Visual C++) в помощь пользователям и столкнулся с такой проблемой как получение HWnd окна. Есть форма на ней набросаны котролы тиnа(Button, Edit). Хочу чтобы пользователь мог таскать их с помощью мыши, но не получается так как не могу получить HWnd контрола, что бы дальше уже передвигать его при помощи функции MoveWindow().(вся обработка мыши происходит из главного окна)
Помогите пожалуйста как правильно организовать этот процесс.Буду очень признателен.

С наилудшеми пожеланиями Женя.
Re: редактор форм
От: Аноним  
Дата: 02.11.01 07:45
Оценка:
Здравствуйте Аноним, Вы писали:

Если главное окно диалоговое, то ::GetDlgItem()
Если просто окно, то прийдется использовать ::EnumChildWindows(...)

Вот так. :)
Re[2]: редактор форм
От: Alex Fedotov США  
Дата: 02.11.01 08:02
Оценка:
Здравствуйте Аноним, Вы писали:

А>Если главное окно диалоговое, то ::GetDlgItem()

А>Если просто окно, то прийдется использовать ::EnumChildWindows(...)

GetDlgItem работает в любом окне, лишь бы были назначены идентификаторы.
-- Alex Fedotov
Re: редактор форм
От: SamUl  
Дата: 02.11.01 14:45
Оценка:
Здравствуйте Аноним, Вы писали:

А>Вот решил написать редактор форм(на Visual C++) в помощь пользователям и столкнулся с такой проблемой как получение HWnd окна. Есть форма на ней набросаны котролы тиnа(Button, Edit). Хочу чтобы пользователь мог таскать их с помощью мыши, но не получается так как не могу получить HWnd контрола, что бы дальше уже передвигать его при помощи функции MoveWindow().(вся обработка мыши происходит из главного окна)

Если известны координаты, то тогда можно еще на всякий случай посмотреть функцию:

HWND ChildWindowFromPoint(
  HWND hWndParent,  // handle to parent window
  POINT Point       // structure with point coordinates
);
Re: редактор форм
От: migel  
Дата: 02.11.01 20:18
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте!

А>Вот решил написать редактор форм(на Visual C++) в помощь пользователям и столкнулся с такой проблемой как получение HWnd окна. Есть форма на ней набросаны котролы тиnа(Button, Edit). Хочу чтобы пользователь мог таскать их с помощью мыши, но не получается так как не могу получить HWnd контрола, что бы дальше уже передвигать его при помощи функции MoveWindow().(вся обработка мыши происходит из главного окна)
А>Помогите пожалуйста как правильно организовать этот процесс.Буду очень признателен.

А>С наилудшеми пожеланиями Женя.


Воспользуйся субклассингом и сделай общую функцию для всех контролов — проще жизть будет Ж-).
Если ты делаеш редактор значит у тебя определенно должно быть окно контейнер на котором все эти зверушки-окошки живут. Пройтись по всему зверинцу можно с помощью АПИ
HWND hwndChild = GetWindow(hWndContainer, GW_CHILD);
while (hwndChild)
{
hwndChild = GetWindow(hwndChild, GW_HWNDNEXT);
}
Re: редактор форм
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.11.01 21:04
Оценка:
Здравствуйте Аноним, Вы писали:

А может лучше готовым воспользоваться?

http://www.optim.ru/Software/rus/ascContainer/asccontainer.asp

Или хочется все самому?

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