Первый запуск приложения без отображения в таскбаре
От: Silvero  
Дата: 28.02.06 10:28
Оценка:
Доброго времени суток!

Может кто сталкивался с такой проблемой: форма со стилем границ типа bsNone иногда (не на всех машинах) при запуске не появляется в taskbar'е. Обнаружил сие после того как пытался ету форму спрятать — она из таскбара не исчезала, т.е. при нажатии кнопки "hide to tray" форма вдруг вылезала на таскбаре, где и оставалась, а сама с desktop'а пропадала.

Конкретно вопросы такие:
1. чем обусловлено отсутствие формы в таскбаре?
2. как с етим бороться?

Заранее, спасибо.
Re: Первый запуск приложения без отображения в таскбаре
От: Danchik Украина  
Дата: 28.02.06 11:20
Оценка:
Здравствуйте, Silvero, Вы писали:

S>Доброго времени суток!


S>Может кто сталкивался с такой проблемой: форма со стилем границ типа bsNone иногда (не на всех машинах) при запуске не появляется в taskbar'е. Обнаружил сие после того как пытался ету форму спрятать — она из таскбара не исчезала, т.е. при нажатии кнопки "hide to tray" форма вдруг вылезала на таскбаре, где и оставалась, а сама с desktop'а пропадала.


S>Конкретно вопросы такие:

S>1. чем обусловлено отсутствие формы в таскбаре?
S>2. как с етим бороться?

S>Заранее, спасибо.


Я так и не понял в чем проблема и чего нужно добиться. Спрятять форму с таск бара или разобраться почему иногда ее там не видно

Маленькое обьяснение:
В таск баре показывается не твоя форма (не важно что вы там выставили), а окно приложения. Это такое себе окошечко которое не видно, но оно есть (прям как суслик ). Добраться к этому окну можна через Application.Handle — это оно и есть.
Так вот если спрятать это окно то с таск бара оно исчезнет.
ShowWindow (Application.Handle, SW_HIDE)

Есть и другой способ спрятать его — забрать у окна стиль WS_EX_APPWINDOW
SetWindowLong (Application.Handle, GetWindowLong (Application.Handle, GWL_EXSTYLE) and not WS_EX_APPWINDOW)

Этот способ также позволяет показать форму в таск баре.
SetWindowLong (Application.Handle, GetWindowLong (Application.Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW)

Но, как правило, на своих формах пишут код подобный этому (перекрываем CreateParams):
procedure TTaskBarForm.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
  Params.WndParent := 0;
end;

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