Отображать окно поверх других окон, но не панель задач - PullRequest
1 голос
/ 18 октября 2010

Мое приложение открывает пользовательский диалог всякий раз, когда в ленте RSS обнаруживаются новые элементы, пользовательский диалог начинается в нижней части экрана, поднимается вверх, приостанавливается, а затем снова опускается.

Я хочу, чтобы диалог располагался поверх других окон (потому что уведомления важны для меня), поэтому я установил для свойства TopMost формы значение true.Проблема в том, что он также находится в верхней части панели задач (чего я не хочу).

Есть ли способ сделать диалог поверх других окон, но не на панели задач?

(Пожалуйста, не обсуждайте, должен ли я сделать это. Это пользовательское приложение только для моего использования, и именно так Я хочу, чтобы оно работало. Я также добавил параметр, чтобы включить / отключить эту функцию, на случай, если я этого не сделаюхочу, чтобы это работало так больше.)

Ответы [ 2 ]

1 голос
/ 18 октября 2010

Вот хороший пример всплывающего окна над панелью задач:http://www.codeproject.com/KB/miscctrl/taskbarnotifier.aspx

Если пользователь перетаскивает окно, вам необходимо переопределить событие OnPaint.Ключ вызывает SetBounds() в форме, вычисляя границы по размеру формы и Screen.PrimaryScreen.WorkingArea, что исключает панель задач из ее высоты.Джеймс

0 голосов
/ 18 октября 2010

Причина, по которой это не сработает, заключается в том, что вы не знаете, будет ли самое верхнее окно над всплывающим окном находиться над или под панелью задач. В большинстве случаев фактическое самое верхнее окно будет находиться над панелью задач. Вы не можете иметь окно под панелью задач и над другим окном, если другое окно уже над панелью задач.

Вы можете немного поиграть с SetWindowPos и ​​посмотреть, сможете ли вы получить желаемый результат, но это будет очень сложно.

См. http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx о том, как SetWindowPos () работает, и http://www.pinvoke.net/default.aspx/user32.setwindowpos и http://www.pinvoke.net/default.aspx/Constants.SWP о том, как вы можете вызвать эту функцию из WinForms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...