Страница 1 из 1
Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 31 авг 2015, 06:32
Сионист
Как создать дочернее окно, которое не будет лежать на поверхности родительского, а сможет перемещаться по всему рабочему столу?
Re: Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 31 авг 2015, 07:13
WinMain
Лично я делаю так: создаю дочернее окно и в качестве родительского указываю ему окно рабочего стола Windows.
Дескриптор окна рабочего стола можно получить с помощью функции GetDesktopWindow();
Re: Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 31 авг 2015, 08:11
Сионист
WinMain писал(а):Лично я делаю так: создаю дочернее окно и в качестве родительского указываю ему окно рабочего стола Windows.
Странная метода. Оно же должно быть дочерним не рабочего стола, а одного из окон программы. Просто его не надо ограничивать в перемещениях границами родительского окна. Но при закрытии родительского оно тоже должно закрыться.
Re: Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 01 сен 2015, 10:47
Decoder
Код: Выделить всё
HWND hParent = ::GetDesktopWindow();
DWORD dwExStyle = WS_EX_PALETTEWINDOW;
DWORD dwStyle = WS_SYSMENU | WS_VISIBLE | WS_THICKFRAME;
::CreateWindowEx(dwExStyle, _T("LISTBOX"), _T("Child window"),
dwStyle, 10, 10, 300, 250, hParent, NULL, hInst, NULL);
Создаёшь таким образом дополнительное окно и перемещай его по всему экрану.
Re: Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 02 сен 2015, 09:28
Сионист
Пэрентом должно быть своё окно, весь экран - только для границ перемещения.
Re: Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 02 сен 2015, 11:35
Romeo
Так не получится. Операционная система запрещает перемещения чайлда за границы парента.
А зачем ты вводишь такое требование на парента? Проанализируй это требование. С большой долей вероятности оно надумано.
Re: Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 02 сен 2015, 13:12
Decoder
Дескриптор главного окна приложения можно указать в качестве родительского, но в данном случае разницы не будет никакой. Родительское окно актуально в случае создания модального диалога. Тогда родительское окно блокируется и не обрабатывает входящие сообщения, пока не будет закрыт модальный диалог. Ещё родительское окно можно использовать для отправки ему оконных сообщений из немодального дочернего окна, но это можно делать и другим способом.
Re: Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Добавлено: 02 сен 2015, 13:20
Сионист
Каким таким способом оно может узнать, куда отправлять? А если бы они были, то их же можно юзать и для блокировки одного окна пока не закроется другое.