Создание видимого окна без иконки в панели задач
От: Трудорг Украина  
Дата: 03.03.12 16:29
Оценка:
Мое почтение, многоуважаемые форумчане!
Создал приложение с Topmost диалоговым окном а-ля "помощник" в winword. Хочу работать с ним только из трея, но не могу понять как убрать его иконку из панели задач.
Буду премного благодарен за подсказку.
Спасибо!
Re: Создание видимого окна без иконки в панели задач
От: okman Беларусь https://searchinform.ru/
Дата: 03.03.12 16:38
Оценка:
Здравствуйте, Трудорг, Вы писали:

Т>Создал приложение с Topmost диалоговым окном а-ля "помощник" в winword. Хочу работать с ним только из трея, но не могу понять как убрать его иконку из панели задач.


Вариант 1.
Добавить в расширенные стили окна флаг WS_EX_TOOLWINDOW.

Вариант 2.
Сделать окно помощника дочерним по отношению к какому-нибудт message-only window.
См. здесь — http://msdn.microsoft.com/en-us/library/windows/desktop/ms632599(v=vs.85).aspx#message_only
Re[2]: Создание видимого окна без иконки в панели задач
От: kero Россия  
Дата: 03.03.12 19:36
Оценка:
Здравствуйте, okman, Вы писали:

Т>>Создал приложение с Topmost диалоговым окном а-ля "помощник" в winword. Хочу работать с ним только из трея, но не могу понять как убрать его иконку из панели задач.


O>Вариант 2.

O>Сделать окно помощника дочерним по отношению к какому-нибудт message-only window.

Не вполне OK
(см. http://rsdn.ru/forum/winapi/2610470.all.aspx
Автор: kero
Дата: 05.08.07
, с утилиткой для экстренной проверки).
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[3]: Создание видимого окна без иконки в панели задач
От: okman Беларусь https://searchinform.ru/
Дата: 03.03.12 19:46
Оценка:
Здравствуйте, kero, Вы писали:

O>>Сделать окно помощника дочерним по отношению к какому-нибудт message-only window.


K>Не вполне OK

K>(см. http://rsdn.ru/forum/winapi/2610470.all.aspx
Автор: kero
Дата: 05.08.07
, с утилиткой для экстренной проверки).


А можете прокомментировать, что конкретно "не ОК" ?

Допустим, у нас есть окно зарегистрированного посредством RegisterClassEx класса,
созданное через CreateWindowEx, цикл обработки сообщений которого выполняется
стандартной схемой с GetMessage/TranslateMessage/DispatchMessage. При этом окно
message-only, на WM_CREATE создает иконку в трее, на WM_DESTROY иконка удаляется.
У этого окна есть child — какой-нибудь немодальный диалог со стилем WS_EX_TOPMOST,
все время висящий на экране. child-окно создается через CreateDialogParam с hWndParent,
равным hWnd главного окна приложения, которое message-only.

Какие тут могут быть грабли ?
Re[4]: Создание видимого окна без иконки в панели задач
От: kero Россия  
Дата: 03.03.12 20:36
Оценка: 4 (1)
Здравствуйте, okman, Вы писали:

O>А можете прокомментировать, что конкретно "не ОК" ?


O>Допустим, у нас есть окно зарегистрированного посредством RegisterClassEx класса,

O>созданное через CreateWindowEx, цикл обработки сообщений которого выполняется
O>стандартной схемой с GetMessage/TranslateMessage/DispatchMessage. При этом окно
O>message-only, на WM_CREATE создает иконку в трее, на WM_DESTROY иконка удаляется.
O>У этого окна есть child — какой-нибудь немодальный диалог со стилем WS_EX_TOPMOST,
O>все время висящий на экране. child-окно создается через CreateDialogParam с hWndParent,
O>равным hWnd главного окна приложения, которое message-only.

O>Какие тут могут быть грабли ?


Не о каких-то граблях (ваша схема, конечно, рабочая) — речь всего лишь о неточностях.
Для описанного вами варианта:
1) имеем дело не с "child", а с "owned";
2) owned окно по-любому не поимеет кнопы на таскбаре (видимость/невидимость owner-а тут роли не играет);
3) данному owner-у быть именно message-only не обязательно, подойдет и hidden, и 0-size visible (с WS_EX_TOOLWINDOW).

Ссылку
Автор: kero
Дата: 05.08.07
же приводил прежде всего на тот случай, если подразумевалось управление таскбарной кнопой на лету.
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[5]: Создание видимого окна без иконки в панели задач
От: okman Беларусь https://searchinform.ru/
Дата: 03.03.12 20:56
Оценка:
Здравствуйте, kero, Вы писали:

K>Не о каких-то граблях (ваша схема, конечно, рабочая) — речь всего лишь о неточностях.

K>Для описанного вами варианта:
K>1) имеем дело не с "child", а с "owned";

Совершенно верно !
Эта путаница — далеко не первая, которая берет начало из неудачного выбора имен.
Например (MSDN):

hWndParent
A handle to the window that owns the dialog box.

Логичнее (и безопаснее !) было бы иметь hWndOwner, а не hWndParent.
Re[6]: Создание видимого окна без иконки в панели задач
От: kero Россия  
Дата: 03.03.12 21:14
Оценка:
Здравствуйте, okman, Вы писали:

K>>1) имеем дело не с "child", а с "owned";


O>Совершенно верно !

O>Эта путаница — далеко не первая, которая берет начало из неудачного выбора имен.

именно этой путанице и посвящено то, что по ссылке

O>Например (MSDN):

O>

O>hWndParent
O>A handle to the window that owns the dialog box.

O>Логичнее (и безопаснее !) было бы иметь hWndOwner, а не hWndParent.

Однако ведь поле "hWndParent" (в CreateWindowEx/CreateDialog*/DialogBox*) может быть использовано и под законный Parent, для создания окна с WS_CHILD...
так что, пожалуй, надо бы что-то вроде hWndParentOwner
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.