Hi!
Как можно убрать иконку окна с task bar'а? Пробовал через интерфейс ITaskbarList, иконка исчезает, но при активации этого окна, иконка снова появляется.
Здравствуйте Долгов Сергей Сергеевич, Вы писали:
ДСС>Hi! ДСС>Как можно убрать иконку окна с task bar'а? Пробовал через интерфейс ITaskbarList, иконка исчезает, но при активации этого окна, иконка снова появляется.
Здравствуйте Долгов Сергей Сергеевич, Вы писали:
ДСС>Hi! ДСС>Как можно убрать иконку окна с task bar'а? Пробовал через интерфейс ITaskbarList, иконка исчезает, но при активации этого окна, иконка снова появляется.
А почему она не должна появиться, ведь окно видно, потому и на таскбаре есть!
Здравствуйте Долгов Сергей Сергеевич, Вы писали:
ДСС>Hi! ДСС>Как можно убрать иконку окна с task bar'а? Пробовал через интерфейс ITaskbarList, иконка исчезает, но при активации этого окна, иконка снова появляется.
Вот как она начинается
Q
How do I build a stealth dialog—one that doesn’t appear on the taskbar? I’ve tried manually setting the WS_EX_TOOLWINDOW style as it says in the documentation, but this only shrinks the caption bar; the dialog still shows up on the taskbar.
Martin MacRobert
A
As is so often the case in Windows, the answer involves a scratch-your-head-while-you-rub- your-stomach-and-touch- your-left-pinky-to-your-right-knee kind of solution.
т.e. через сами знаете что
и мне почему-то кажется что номального решения сей проблемы нет
Если тебя не волнует размер заголовка, то при создании можно указать WS_EX_TOOLWINDOW
Здравствуйте ua1zcl, Вы писали:
U>Здравствуйте Долгов Сергей Сергеевич, Вы писали:
ДСС>>Hi! ДСС>>Как можно убрать иконку окна с task bar'а? Пробовал через интерфейс ITaskbarList, иконка исчезает, но при активации этого окна, иконка снова появляется.
Приведенный ниже код скрывает/показывает первый попавшийся Notepad (т.е. можно скрывать любое окно... даже не свое).
HWND hWnd = ::FindWindow(_T("Notepad"), NULL);
if(!hWnd)
return;
// Если окно уже имеет парента...if(::GetWindowLong(hWnd, GWL_HWNDPARENT))
// урать его, тем самым показав в таскбаре...
::SetWindowLong(hWnd, GWL_HWNDPARENT, NULL);
else// иначе ставим его парантом к DesktopWindow, тем самым убирая из таскбара.
::SetWindowLong(hWnd, GWL_HWNDPARENT, (LONG)::GetDesktopWindow());
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Долгов Сергей Сергеевич, Вы писали:
ДСС>Hi! ДСС>Как можно убрать иконку окна с task bar'а? Пробовал через интерфейс ITaskbarList, иконка исчезает, но при активации этого окна, иконка снова появляется.
И когда же народ научится пользоваться кнопкой "П О И С К" Я скоро письмо напишу администраторам, чтобы они ее сделали побольше и красной
Здравствуйте VladD2, Вы писали:
VD>Здравствуйте Долгов Сергей Сергеевич.
VD>Приведенный ниже код скрывает/показывает первый попавшийся Notepad (т.е. можно скрывать любое окно... даже не свое).
VD> ::SetWindowLong(hWnd, GWL_HWNDPARENT, (LONG)::GetDesktopWindow());
В МСДН написано, что вместо данной функции с параметром GWL_HWNDPARENT лучше (и желательно) использовать SetWindowParent (), но желаемый эффект от вызова последней почему-то не наблюдается, а с SetWindowLong () всё нормально... плз, объясните почему, если можно?
Здравствуйте Alexander, Вы писали:
A>В МСДН написано, что вместо данной функции с параметром GWL_HWNDPARENT лучше (и желательно) использовать SetWindowParent (), но желаемый эффект от вызова последней почему-то не наблюдается, а с SetWindowLong () всё нормально... плз, объясните почему, если можно?
Вроде как SetParent работает только с чильд-окнами...
::SetWindowLong(hWnd, GWL_HWNDPARENT...
Это вообще прямая работа с содержимым окна. Для SetWindowLong флаг GWL_HWNDPARENT вообще не документирован. Однако во всех версиях виндовс это работает (видимо MS сами пользуются этой фичей, ну а другим рекамендуют как безопаснее).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
VD>Это вообще прямая работа с содержимым окна. Для SetWindowLong флаг GWL_HWNDPARENT вообще не документирован. Однако во всех версиях виндовс это работает (видимо MS сами пользуются этой фичей, ну а другим рекамендуют как безопаснее).
А где Ты отрыл этот метод?
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Здравствуйте Alexander Shargin, Вы писали:
AS>Здравствуйте VladD2, Вы писали:
VD>>Это вообще прямая работа с содержимым окна. Для SetWindowLong флаг GWL_HWNDPARENT вообще не документирован. Однако во всех версиях виндовс это работает (видимо MS сами пользуются этой фичей, ну а другим рекамендуют как безопаснее).
AS>А где Ты отрыл этот метод?
Ты будешь смеяться, но в MSDN/RSDN.
В мсдн-е написано, что выподающие окна комбов являются чилдами у десктопа. На этом один раз кто-то подловил AF (елси не ошибаюсь).
Про то, что SetWindowLong имеет неполное описание я и нашьше знал (все флаги из GetWindowLong можно использовать и в SetWindowLong). Мы для ascDB делали редактор ячейки который позволяет открывать иерархические псевдо-комбо-окна, котоные одержут грид и могут иметь фокус (в отличи от обычных комбов). При реализации данной фичи нам пнишлось повозиться с SetWindowLong. В том числе с динамической заменой парента у поуп-ап окон.
Ну, а далее сопоставил и сделал тест.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Alexander Shargin, Вы писали:
VD>>Это вообще прямая работа с содержимым окна. Для SetWindowLong флаг GWL_HWNDPARENT вообще не документирован. Однако во всех версиях виндовс это работает (видимо MS сами пользуются этой фичей, ну а другим рекамендуют как безопаснее).
AS>А где Ты отрыл этот метод?
Саня, добавляй в Q&A
Если нам не помогут, то мы тоже никого не пощадим.
Ветка включена в "WIN API — Q&A", а это как приглашение продолжить.
А>лучше нарой способ перманентно снести из таскбара консольное окно. в XP или Win2k
Ну да, консольное окно — как раз пример, когда код с SetWindowLong/GWL_HWNDPARENT не работает (т.е. консольному окну "owner" просто так не назначить).
Но 1) консольное окно не возражает против parent-а — окна Progman (через SetParent),
и 2) ничто не мешает в ToolbarWindow32 таскбара соответствующую кнопку — спрятать (TBSTATE_HIDDEN).
А об обычной путанице с parent и owner в данной ветке см. здесь