Страница 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
Сионист
Каким таким способом оно может узнать, куда отправлять? А если бы они были, то их же можно юзать и для блокировки одного окна пока не закроется другое.