Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Позиии приложений [D7]


liavik ©   (2006-05-30 17:47:00) 

Мое приложение FormStyle = fsStayOnTop. При запуске из моей проги чужой программы делаю SetWindowPos (чуж.прг, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE); Форма загружается поверх моего. Между формами можно переключаться, именно этого эффекта я и добивлся. Но при открытии у нее дочерних модальных форм она уходит за мою и  досвиданья... Как этого избежать?


liavik   (2006-05-30 18:06:00) [1]

Вот код:

procedure TFormDDEPR.ReadWin20001Click(Sender: TObject);
var err: integer;
   h: thandle;
begin
// если чуж. прога уже загружена, то ее на передний план...
h:= FindWindow('Tdlg_Main', nil);
if h > 0 then begin
   SetWindowPos (h, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE);
   exit;
end;
// сообственно ее запускаем
err:= WinExec(PChar('C:\Program Files\Endress+Hauser\ReadWin32\ReadWin32.exe'), SW_SHOWNORMAL);
if err < 32 then begin
   MessageDlg('Ошибка запуска ReadWin2000. Проверьте наличие программы' +#10#13+ 'C:\Program Files\Endress+Hauser\ReadWin32\ReadWin32.exe', mtError, [mbOK], 0);
   exit;
end;

h:= FindWindow('Tdlg_Main', nil);
if h > 0 then begin
  SetWindowPos (h, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE);
//  SetWindowPos (Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE+SWP_NOSIZE);
// если раскомент. то в принципе все работает как надо, НО
// мое приложение становиться не  TOPMOST, и юзера могут играть в "косынку" :)
end;
end;


antonn   (2006-05-30 17:49:00) [2]

вызывать

> SetWindowPos (чуж.прг, HWND_TOPMOST, 0, 0, 0, 0,
> SWP_NOMOVE+SWP_NOSIZE);

несколько раз.


Наверх

Титульная страница Поиск, карта сайта Написать письмо