![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| victor79 |
|
|||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
есть в моей программе два независимых окна, и на панели пуска по ним отображается две иконки.
По нажатию кнопки на одном из окон всплывает модальное окошко, привязанное к тому окну, на котором нажали. И вот хочу я сделать так, что бы оно было модальным для обоих окон. Для этого второе окно я блокирую - EnableWindow(hwnd, 0) Но остаются следующие проблемы. 1. Если щелкнуть по иконке на панели пуска другого окна (которое EnableWindow(hwnd, 0)), то оно все же активизируется, мне приходится на событии WM_ACTIVATE делать SetActiveWindow(hModalWindow). Но иконка на панели пуска не хочет пережиматься на ту, которая для первого окна. 2. И есть ли какая нибудь функция, что бы при этом заголовок модального окна помигал, так же как если я щелкаю по владельцу модального окна? т.е. общий вопрос в том, как красивее сделать блокировку второго окна, что бы его поведение было таким же, как и для владельца модального? модальное окно крутит свой цикл обработки сообщений и в главный цикл возвращает управление только по закрытию (получается что-то вроде как если вызывать MessageBox, только окна свои вместо мессаджа) делаю на mingw и никаких visual классов неиспользую - только винапи. |
|||
|
||||
| BEOWOLF |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 24.8.2007 Репутация: 1 Всего: 2 |
Вообще иерархия окон - строгое дерево, так что двух родителей одновременно быть не может. Но зато их можно переназначить. Так что можно попробовать вот такой вариант - написать допустим в классе статический HWND hdlgModal этого модального диалога, или глобалный HWND hdlgModal, и когда приходит WM_ACTIVATE на какое-нибудь окно в панели задач, то пишешь в процедуре там
|
|||
|
||||
| victor79 |
|
|||
|
программист ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
Ваш совет навел меня на более совершенную мысль - при событии WM_SETCURSOR lParam = WM_L/RBUTTONDOWN подменяю все hwnd кроме модального на владельца модального - и получается то что нужно - мигает модальное окно, и владелец остается тем же.
Спасибо. Это сообщение отредактировал(а) victor79 - 28.3.2010, 11:47 |
|||
|
||||
![]()
|
| Правила форума "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. |