Как создать дочернее окно, которое не будет лежать на поверхности родительского?
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Как создать дочернее окно, которое не будет лежать на поверхности родительского, а сможет перемещаться по всему рабочему столу?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Лично я делаю так: создаю дочернее окно и в качестве родительского указываю ему окно рабочего стола Windows.
Дескриптор окна рабочего стола можно получить с помощью функции GetDesktopWindow();
Дескриптор окна рабочего стола можно получить с помощью функции GetDesktopWindow();
Странная метода. Оно же должно быть дочерним не рабочего стола, а одного из окон программы. Просто его не надо ограничивать в перемещениях границами родительского окна. Но при закрытии родительского оно тоже должно закрыться.WinMain писал(а):Лично я делаю так: создаю дочернее окно и в качестве родительского указываю ему окно рабочего стола Windows.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Код: Выделить всё
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);
Поумнеть несложно, куда труднее от дури избавиться.
Пэрентом должно быть своё окно, весь экран - только для границ перемещения.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Так не получится. Операционная система запрещает перемещения чайлда за границы парента.
А зачем ты вводишь такое требование на парента? Проанализируй это требование. С большой долей вероятности оно надумано.
А зачем ты вводишь такое требование на парента? Проанализируй это требование. С большой долей вероятности оно надумано.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Дескриптор главного окна приложения можно указать в качестве родительского, но в данном случае разницы не будет никакой. Родительское окно актуально в случае создания модального диалога. Тогда родительское окно блокируется и не обрабатывает входящие сообщения, пока не будет закрыт модальный диалог. Ещё родительское окно можно использовать для отправки ему оконных сообщений из немодального дочернего окна, но это можно делать и другим способом.
Поумнеть несложно, куда труднее от дури избавиться.
Каким таким способом оно может узнать, куда отправлять? А если бы они были, то их же можно юзать и для блокировки одного окна пока не закроется другое.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.