Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Вниз

Развернуть чужое окно   Найти похожие ветки 

 
*Pavel ©   (2005-11-29 11:21) [0]

Пользуюсь следующим:
  ShowWindow(hwnd,  SW_SHOW);
  SetForegroundWindow(hwnd);
Если окно не свернуто в панель задач - работает сколько угодно раз (как и положено перемещается на передний план). Но стоит свернуть - развернет его единажды, затем его можно только закрыть, свернуть никак не получается. Зависит ли это от ОС ? Если да, то как сделать универсальное приложение т.е. работоспособное от W98 до XP ?


 
han_malign ©   (2005-11-29 11:33) [1]

попробуй докопаться до "главного" окна(для Delphi приложений - это Application):
var _wnd, wnd: HWND;
begin
   wnd:= hwnd;
    _wnd:= GetParent(wnd);
   while(_wnd <> 0)do begin
        wnd:= _wnd;
       _wnd:= GetParent(wnd);
   end;
   ShowWindow(wnd,  SW_SHOW);
   SetForegroundWindow(hwnd);
...

- у него флаг Visible не выставляется(при показывании дочернего окна минуя главное), поэтому свернуть больше не получается.


 
*Pavel ©   (2005-11-29 12:08) [2]

Пробовал так:

hwnd := FindWindow("TfrmMain", "My programm name");

//debug window -  hwnd = 8601822

_hwnd:= GetParent(hwnd);
//debug window -  _hwnd = 0

Выходит, что главнее окна, чем это просто нет.


 
ANB ©   (2005-11-29 14:54) [3]


> *Pavel ©   (29.11.05 12:08) [2]

Все обычные (не MDI) формы твоего приложения с точки зрения виндовс являются окнами верхнего уровня. Следовательно у них нету парента.
Окно Application всегда невидимо. Если приложений запущено несколько, то оптимальный способ различать их по ProcessID (PID).

ЗЫ.Поднятие окна на передний план постоянно блокируется от версии к версии. SetForegroundWindow далеко не всегда помогает в NT.


 
Leonid Troyanovsky ©   (2005-11-29 15:10) [4]


> *Pavel ©   (29.11.05 12:08) [2]
> Пробовал так:

> hwnd := FindWindow("TfrmMain", "My programm name");
..
> _hwnd:= GetParent(hwnd);


Application для Form выступает несколько в другом отношении,
т.е., AppWnd := GetWindowLong(hwnd, GWL_OWNER)

См. также:

http://groups.google.com/group/fido7.su.win32.prog/msg/1984ffcf8ae2b539

--
Regards, LVT.


 
*Pavel ©   (2005-11-29 16:34) [5]

Все заработало, только не с GWL_OWNER, а GWL_HWNDPARENT.
Thank"s


 
Leonid Troyanovsky ©   (2005-11-30 09:47) [6]


> *Pavel ©   (29.11.05 16:34) [5]
> Все заработало, только не с GWL_OWNER, а GWL_HWNDPARENT.


Млин, конечно, имел ввиду именно GWL_HWNDPARENT,
бо первого в природе не существует.
Sorry.

--
Regards, LVT.


 
psa247 ©   (2005-12-03 10:55) [7]

Скажите, что происходит с приложением при клике на "свернуть все окна" ?



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

Форум: "WinAPI";
Текущий архив: 2006.02.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
6-1131526303
Ezorcist
2005-11-09 11:51
2006.02.19
Обработчики событий у компонента TServerSocket


1-1137884308
ancot
2006-01-22 01:58
2006.02.19
Очередной генератор отчетов


15-1138315032
Стыдно
2006-01-27 01:37
2006.02.19
г/л в мл/м.куб


4-1133690898
Surik
2005-12-04 13:08
2006.02.19
EnumResourceTypes постоянно возвращает ошибку


2-1139062291
hunn
2006-02-04 17:11
2006.02.19
цвет точки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский