Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 190
от 19.01.2006, 15:12

Администратор:Калашников О.А.
В рассылке:Подписчиков: 248, Экспертов: 26
В номере:Вопросов: 1, Ответов: 4


Вопрос № 33210: Здравия, Эксперты! Вот такая у меня заморочка: Через окно эксплорера запускаю экзешник, он рассылает сообщения... Есть окно - оно ловит это сообщение и говорит другому окну "покажися" (оно свернуто в трей). Это окно соответ...

Вопрос № 33.210
Здравия, Эксперты!

Вот такая у меня заморочка:
Через окно эксплорера запускаю экзешник, он рассылает сообщения...
Есть окно - оно ловит это сообщение и говорит другому окну "покажися" (оно свернуто в трей). Это окно соответственно показывается, но фокус остается у окна эксплорера! А надо чтобы активным стало всплывающее окно...
В место этого мое окно появляется сзади эксплорера и на панали задачь его кнопочка мигает...
Есть какая апишка перемпещающая фокусы активности от окна к окну?

Приложение диалоговое, ВС6, МФЦ
Отправлен: 13.01.2006, 21:03
Вопрос задал: Zitz (статус: 4-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Zitz!
Существуют следующие API-функции для активации других окон и передачи им фокуса:
SetActiveWindow(hWnd); - активирует окно.
SetForegroundWindow(hWnd); - перемещает окно на передний план и активирует его.
SetFocus(hWnd); - устанавливает фокус ввода на заданное окно.
Не всегда эти функции корректно работают, поэтому, если не сработала одна - попробуйте другую или же используйте их совместно, одну за другой.
---------
Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 13.01.2006, 21:18

Отвечает: RedDevil
Здравствуйте, Zitz!
Попробуй так:
ShowWindow(SW_SHOWNORMAL);
Ответ отправил: RedDevil (статус: 3-ий класс)
Отправлен: 14.01.2006, 09:14

Отвечает: Raptor1
Здравствуйте, Zitz!
Я делал так (hwndFirst - окно которое должно появиться):

::SetActiveWindow(hwndFirst);
::SetForegroundWindow(hwndFirst);
::SetFocus(hwndFirst);
Ответ отправил: Raptor1 (статус: Студент)
Отправлен: 14.01.2006, 13:05

Отвечает: LinkFly
Здравствуйте, Zitz!
А можно ещё присоединить ввод к окну:
SetCapture, ReleaseCapture
Посмотри может пригодиться
---------
Именно в творчестве выражается самое человечное в человеке ;)
Ответ отправил: LinkFly (статус: 1-ый класс)
Отправлен: 15.01.2006, 14:51
Оценка за ответ: 2
Комментарий оценки:
MSDN:
Only the foreground window can capture the mouse.
...
Also, even if the foreground window has captured the mouse, the user can still click another window, bringing it to the foreground.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.winapifaq
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное