Главная страница
    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.05 c
15-1138290101
basnik
2006-01-26 18:41
2006.02.19
$$$. Клиент-серверный парсинг.


2-1138691604
ORMADA
2006-01-31 10:13
2006.02.19
Шифрование+Открытые/Закрытые ключи


2-1138896451
dera
2006-02-02 19:07
2006.02.19
Не знаю, сможете ли помочь...


15-1138265524
AlexD
2006-01-26 11:52
2006.02.19
Windows XP


2-1138977194
Silica
2006-02-03 17:33
2006.02.19
Stringgrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский