Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Как обеспечить чтобы окно было повнрх всех!   Найти похожие ветки 

 
Jiurasrasr   (2004-08-22 13:54) [0]

Доброе время суток!
Я запускаю из своейпрограммы другое приложение (Microsoft Excel) - как сделать так, чтобы после запуска другого приложеня окно из моей программы находилось сверху него. Т.е. чтобы я мог работать в другом приложении а маленькое окошко висит сверху


 
ssk ©   (2004-08-22 14:18) [1]

попробуй так:


 SetWindowPos( MainForm.Handle,
               HWND_TOPMOST,
               0,
               0,
               0,
               0,
               SWP_NOMOVE or SWP_NOSIZE);


 
Юрий Зотов ©   (2004-08-22 15:22) [2]

> ssk ©   (22.08.04 14:18) [1]
Это сработает на один раз. А далее?

> Jiurasrasr   (22.08.04 13:54)
Разве FormStyle=fsStayOnTop уже отменили?


 
ssk ©   (2004-08-22 15:45) [3]

>Юрий Зотов ©   (22.08.04 15:22) [2]
> ssk ©   (22.08.04 14:18) [1]
Это сработает на один раз. А далее?


А что значит один раз? Если не сложно, объясните пожалуйста.
Вот только что проверил: поместил этот код [1] в OnCreate формы, а в обработчик кнопки поместил ShellExecute() с запуском блокнота. Запускаю блокнот по нажатию кнопки, а закрываю как обычно. Форма постоянно находится поверх всех остальных окон.


 
DVM ©   (2004-08-22 18:54) [4]


> Запускаю блокнот по нажатию кнопки, а закрываю как обычно.
> Форма постоянно находится поверх всех остальных окон.

До тех пор, пока не найдется другое такое же "умное окно". Или хотя бы вторая копия той же программы. Чтобы удерживать окно наверху (более или менее) надо еще fsStayOnTop или самому написать соотв обработчик WM_WINDOWPOSCHANGING


 
TUser ©   (2004-08-22 19:05) [5]

SetForegroundWindow(Handle) после CreateProcess/ShellExecute


 
Юрий Зотов ©   (2004-08-22 19:37) [6]

> ssk ©   (22.08.04 14:18) [1]

Вы правы. Почему-то я думал, что SetWindowPos - это одноразовая акция, а далее надо обрабатывать WM_WINDOWPOSCHANGING и ставить SWP_NOZORDER. Спасибо. Век живи - век учись... :о)

Посмотрел в исходники VCL - такой же вызов SetWindowPos стоит в TCustomForm.CreateWnd при fsStayOnTop. Значит, проще выставить это свойство в Object Inspector.


 
SergP ©   (2004-08-22 19:45) [7]


>  [2] Юрий Зотов ©   (22.08.04 15:22)
> > ssk ©   (22.08.04 14:18) [1]
> Это сработает на один раз. А далее?
>
> > Jiurasrasr   (22.08.04 13:54)
> Разве FormStyle=fsStayOnTop уже отменили?


Только при изменении FormStyle в процессе работы программы иногда возникают неприятные глюки, связанные с неправильным отображением окна...



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.058 c
4-1090317648
TRyaSS
2004-07-20 14:00
2004.09.05
COM-порт.Немогу записать в порт.


3-1092116802
Faeton08
2004-08-10 09:46
2004.09.05
Номер по порядку


14-1092413274
Undert
2004-08-13 20:07
2004.09.05
Модераторы


4-1089879356
Unknown Mystic
2004-07-15 12:15
2004.09.05
Как выполнить другую программу и получить код возврата?


14-1092802196
Родитель
2004-08-18 08:09
2004.09.05
в чем прикол-то?