Здравствуйте Аноним, Вы писали:
А>Вот решил написать редактор форм(на Visual C++) в помощь пользователям и столкнулся с такой проблемой как получение HWnd окна. Есть форма на ней набросаны котролы тиnа(Button, Edit). Хочу чтобы пользователь мог таскать их с помощью мыши, но не получается так как не могу получить HWnd контрола, что бы дальше уже передвигать его при помощи функции MoveWindow().(вся обработка мыши происходит из главного окна)
Если известны координаты, то тогда можно еще на всякий случай посмотреть функцию:
HWND ChildWindowFromPoint(
HWND hWndParent, // handle to parent window
POINT Point // structure with point coordinates
);
Здравствуйте Аноним, Вы писали:
А>Здравствуйте!
А>Вот решил написать редактор форм(на Visual C++) в помощь пользователям и столкнулся с такой проблемой как получение HWnd окна. Есть форма на ней набросаны котролы тиnа(Button, Edit). Хочу чтобы пользователь мог таскать их с помощью мыши, но не получается так как не могу получить HWnd контрола, что бы дальше уже передвигать его при помощи функции MoveWindow().(вся обработка мыши происходит из главного окна)
А>Помогите пожалуйста как правильно организовать этот процесс.Буду очень признателен.
А>С наилудшеми пожеланиями Женя.
Воспользуйся субклассингом и сделай общую функцию для всех контролов — проще жизть будет Ж-).
Если ты делаеш редактор значит у тебя определенно должно быть окно контейнер на котором все эти зверушки-окошки живут. Пройтись по всему зверинцу можно с помощью АПИ
HWND hwndChild = GetWindow(hWndContainer, GW_CHILD);
while (hwndChild)
{
hwndChild = GetWindow(hwndChild, GW_HWNDNEXT);
}
Здравствуйте Аноним, Вы писали:
А может лучше готовым воспользоваться?
http://www.optim.ru/Software/rus/ascContainer/asccontainer.asp
Или хочется все самому?
В любом случае открою маленький сикрет. Мы делали прозрачное окно... на котором перехватывали сообщения мыши и ... далее все просто получаещь окно (в нашем случае ActivX) из точки.