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

Вниз

Активировать форму   Найти похожие ветки 

 
Чапаев ©   (2006-07-10 13:36) [0]

В определённый момент приложение показывает форму. При этом кнопка, соответствующая этой форме появляется на панели задач, мигает. Если нажать клавишу на клавиатуре, сообщение о нажатии передаётся рабочему столу. Если нажать кнопку мыши на форме, панель задач скрывается (ну или не скрывается, если автоскрытие не включено ;-) ). Для активации формы при показе используется такой код:

procedure TdlgGetKey.ActivateForm;
var
 R:TRect;
begin
 SetWindowPos(Handle,HWND_TOPMOST,(Screen.Width-Width) div 2,(Screen.Height-Height) div 2,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);
 SetForegroundWindow(Handle);
 Windows.SetFocus(Handle);
 R.Left:=(Screen.Width-ClientWidth) div 2+5;
 R.Right:=(Screen.Width+ClientWidth) div 2-5;
 R.Top:=(Screen.Height-Height) div 2+GetSystemMetrics(SM_CYCAPTION)+5;
 R.Bottom:=(Screen.Height+Height) div 2-5;
 ClipCursor(@R);
end;

Чего не хватает? :-)


 
capkoh ©   (2006-07-10 16:29) [1]

И в итоге она не активируется? :-)

А нужно вызывать SetForegroundWindow? Без нее не работает?
Если нет, то я бы посоветовал поменять местами первые 2 строки. Сначала SetForegroundWindow, а потом уже SetWindowPos.


 
Ketmar ©   (2006-07-10 19:03) [2]

ещё можно попробовать привинтить поток ввода. а вообще -- гугль. где-то там я встречал по похожему поводу детальное исследование. %-)


 
Leonid Troyanovsky ©   (2006-07-10 19:56) [3]


> Чапаев ©   (10.07.06 13:36)  

> Чего не хватает? :-)


Видимо, не удовлетворены ограничения MS.
RTFM: msdn SetForegroundWindow.

--
Regards, LVT.


 
второе явление Чапаева народу   (2006-07-11 10:35) [4]


> А нужно вызывать SetForegroundWindow? Без нее не работает?

И с ней, и без неё не работает. По крайней мере, не работает так, как мне хотелось бы.


> RTFM: msdn SetForegroundWindow.

Та уже RTFM (перед тем, как вызов указанной функции вставить)... Ну что ж, попытаемся ещё.


 
второе явление Чапаева народу   (2006-07-11 10:37) [5]

В принципе, проблема решается вызовом AllocConsole;FreeConsole; после показа формы, но это ж всё равно, что гланды через ухо удалять...


 
Ketmar ©   (2006-07-11 17:08) [6]

ой. до такого способа я не додумался... %-)



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

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

Наверх




Память: 0.48 MB
Время: 0.064 c
6-1144309337
DVM
2006-04-06 11:42
2006.08.27
Как замедлить прием данных с сервера HTTP


2-1154939792
Константин_
2006-08-07 12:36
2006.08.27
Сворачивание дочерней формы


1-1152768680
ORMADA
2006-07-13 09:31
2006.08.27
Сихронизация видимого в ListBox и CheckListBox


2-1154786763
Reaktor
2006-08-05 18:06
2006.08.27
Чем можно заменить размер массива?


3-1150727208
Juice
2006-06-19 18:26
2006.08.27
Как в триггере или ХП интербейса узнать текущую дату и время?