![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Sphinx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
При запуске программа не всегда получает фокус. Нужно что бы управление после запуска всегда передовалось программе. Вот фрагмент инициализации:
|
|||
|
||||
| korbian |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 336 Регистрация: 20.2.2007 Где: Penza Репутация: 9 Всего: 14 |
Наверное лучше устанавливать фокус после обработки сообщения WM_PAINT.
-------------------- korbian © |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 39 Всего: 146 |
попробуй ф-цию SetForegroundWindow
// по идее ф-ция ShowWindow должна активировать окно
что в переменной sizescreen? Это сообщение отредактировал(а) 586 - 24.5.2007, 15:34 |
|||
|
||||
| Sphinx |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Пробовал с помощью SetFocus - никакой разницы. Пробовал, тоже никакого эффекта.
Нужно не просто активировать, а чтобы окно вышло на передний план. А то часто бывает окно остается за другими окнами. Константы либо SW_SHOWNORMAL либо SW_SHOWMAXIMIZED. |
||||
|
|||||
| SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 4 Всего: 23 |
Попробуй SetWindowPos со значением второго параметра HWND_NOTOPMOST
|
|||
|
||||
| Sphinx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Пробовал SetWindowPos(hwnd,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); Нужного эффекта не получилось. Спрятать окно за другие с помощью HWND_BOTTOM получается, а вот заставить окно перекрыть окно из которого программа была запущена никак. |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
Sphinx, смотри внимательно
Добавлено через 2 минуты и 57 секунд SenkraD видимо просто опечатался ) -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| Sphinx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Заработало только тогда, когда сделал этот вызов из обработчика WM_CREATE, но управление на это окно не передается, а само окно всегда висит на переднем плане. Это немного не то. Хотелось, что бы окно вываливалось на передний план с передачей ему управления только при запуске программы, а дальше как обычное окно. Но самое интересное - нашел у себя написаную мною программу, которая всегда именно так и делает, но в ней нет вызовов никаких специальных функций типа SetFocus. Сравнил функции создания окна и обработчики окон и не нашел никаких принципиальных отличий. Ну может только то, что одна многопоточная, а другая работает только в одном потоке и в одной обработчик WM_CREATE пустой. Что может влиять на такое различное поведение при запуске? |
|||
|
||||
| Sphinx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 20.7.2006 Репутация: нет Всего: нет |
Проблема решилась с помощью SetForegroundWindow в обраотчике WM_CREATE
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |