Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetActiveWindow и SetWindowPos в NT, сбивается фокус 
:(
    Опции темы
AntonChik
Дата 18.12.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



Здравствуйте.
Дело такое. Проблему в принципе решил, просто интересно почему так.

Постановка такая: пытаюсь держать форму "поверх всех окон". Долблю по таймеру время от времени
Код

          SetWindowPos(hWnd,
          HWND_TOPMOST,
          Form1->Left,
          Form1->Top,
          Form1->Width,
          Form1->Height,
          SWP_SHOWWINDOW);

В 2k и XP все нормально. Под NT моя форма каждый раз отбирает у активного окна фокусsmile 

Полез копаться в коде и обнаружил что hWnd=GetActiveWindow(); стоит в OnActivate (наверно когда-то испугался, что в OnCreate форма еще не активна smile )
Вобщем перенес все же hWnd=GetActiveWindow();  в конец OnCreate и фокус слетать перестал.
Вернул в OnActivate - снова стал по таймеру слетать...
Почему такая проблема именно в NT? Вообще, кто что скажет по этому поводу?



--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
BreakPointMAN
Дата 18.12.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 6
Всего: 24



Цитата(AntonChik @  18.12.2006,  11:46 Найти цитируемый пост)
Постановка такая: пытаюсь держать форму "поверх всех окон". Долблю по таймеру время от времени <...>

А чем не устраивает свойство формы FormStyle, установленное в fsStayOnTop?



--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
AntonChik
Дата 19.12.2006, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



ну да. это просто тогда на скорую руку писал, не подумав...
но все же не потеряет ли cв-во fsStayOnTop со времене свою достоверность... или его предполагается тоже долбить?
и все же хотел бы понять что такое было с SetWindowPos...

p.s. 

кстати, только что проверил... fsStayOnTop слетает, приходится также по таймеру делать fsNormal и тут же опять fsStayOnTop... но это не решает проблем в NT - фокус слетает...

Это сообщение отредактировал(а) AntonChik - 19.12.2006, 09:04
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
witex
Дата 19.12.2006, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 1
Всего: 4



Вся проблема , в том что ты посмтоянно его переключаешь! Изза этого он и активируется! Так что просто поставь свойсво! и ни чего больше!"
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
AntonChik
Дата 19.12.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



2witex: ага. а ты попробуй его другими окнами поперекрывать... которые тоже типо stayontop... если не получится, то плохо пробовал...
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
AntonChik
Дата 20.12.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 4.10.2005
Где: Красноярск

Репутация: 1
Всего: 1



вобщем под NT надо дописывать флаг SWP_NOACTIVATE
Код

SetWindowPos(hWnd,
          HWND_TOPMOST,
          Form1->Left,
          Form1->Top,
          Form1->Width,
          Form1->Height,
          SWP_SHOWWINDOW|SWP_NOACTIVATE);

--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0787 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.