Меню + popup фокус
От: Karabinos Украина  
Дата: 11.05.04 11:32
Оценка:
Добрый день уважаемые.
Есть проблема.
У нас пункты меню в зависимости от текущего фокуса дисейблятся/энейблятся.
Данные в popup-окне, хочется, чтобы при активации меню фокус с popup окна не перемещался на основное окно. Так сделано в VS.
Обработка сообщения WM_MOUSEACTIVATE не помогает.
Есть предложения?
Меньше читай, больше думай. (А.Сурожский)
Re: Меню + popup фокус
От: CEMb  
Дата: 11.05.04 12:06
Оценка:
Здравствуйте, Karabinos, Вы писали:

K>Добрый день уважаемые.

K>Есть проблема.
K>У нас пункты меню в зависимости от текущего фокуса дисейблятся/энейблятся.
K>Данные в popup-окне, хочется, чтобы при активации меню фокус с popup окна не перемещался на основное окно. Так сделано в VS.
K>Обработка сообщения WM_MOUSEACTIVATE не помогает.
K>Есть предложения?

А которые попап-ные окна в VS?
Если всякие докабельные, то у них просто стиль WS_EX_TOOLWINDOW
Тока не уверен, что этого хватит. Вроде ещё что-то требуется...
Re[2]: Меню + popup фокус
От: Karabinos Украина  
Дата: 11.05.04 12:20
Оценка:
Здравствуйте, CEMb, Вы писали:

CEM>Здравствуйте, Karabinos, Вы писали:


K>>Добрый день уважаемые.

K>>Есть проблема.
K>>У нас пункты меню в зависимости от текущего фокуса дисейблятся/энейблятся.
K>>Данные в popup-окне, хочется, чтобы при активации меню фокус с popup окна не перемещался на основное окно. Так сделано в VS.
K>>Обработка сообщения WM_MOUSEACTIVATE не помогает.
K>>Есть предложения?

CEM>А которые попап-ные окна в VS?

CEM>Если всякие докабельные, то у них просто стиль WS_EX_TOOLWINDOW
CEM>Тока не уверен, что этого хватит. Вроде ещё что-то требуется...
В VS именно докебл-окна и есть popup-окна. И у них стиль WS_EX_TOOLWINDOW
Одно другому не мешает. Стиль WS_EX_TOOLWINDOW здесь не причем.
Меньше читай, больше думай. (А.Сурожский)
Re: Меню + popup фокус
От: asheff Украина  
Дата: 11.05.04 15:31
Оценка:
Здравствуйте, Karabinos, Вы писали:

K>Обработка сообщения WM_MOUSEACTIVATE не помогает.

K>Есть предложения?

Помогает. Только надо свое меню делать, и там WM_MOUSEACTIVATE обрабатывать, чтобы меню не забирало фокус у других окон (и неважно, у popup или у child окон). Пример меню, которое не забирает фокуса — это обычное popup menu (CreatePopupMenu). Сделайте себе подобное — и будет вам счастье
... << RSDN@Home 1.1.0 stable >>
Re[2]: Меню + popup фокус
От: Sclown  
Дата: 18.01.07 11:35
Оценка:
Здравствуйте, asheff, Вы писали:

A>Здравствуйте, Karabinos, Вы писали:


K>>Обработка сообщения WM_MOUSEACTIVATE не помогает.

K>>Есть предложения?

A>Помогает. Только надо свое меню делать, и там WM_MOUSEACTIVATE обрабатывать, чтобы меню не забирало фокус у других окон (и неважно, у popup или у child окон). Пример меню, которое не забирает фокуса — это обычное popup menu (CreatePopupMenu). Сделайте себе подобное — и будет вам счастье


К сожалению popup menu (CreatePopupMenu) забирает фокус, но при этом не становится активным. И этим отлючатся от любого обычного окна.
PS. Дату видел... Просто наболело. Бьюсь уже месяц — не знаю как сделать такое окно, которое получало бы фокус, но не активацию...
Re[3]: Меню + popup фокус
От: Вумудщзук Беларусь  
Дата: 18.01.07 13:35
Оценка:
>К сожалению popup menu (CreatePopupMenu) забирает фокус, но при этом не становится активным. И этим отлючатся от любого обычного окна.
>PS. Дату видел... Просто наболело. Бьюсь уже месяц — не знаю как сделать такое окно, которое получало бы фокус, но не активацию...
а почему ты уверен, что попап окно забирает фокус?
то есть тебе нужно сделать нечто вроде поведения календаря в контроле date & time picker (при активации календаря фокус остаётся на главном окне, но тем не менее можно стрелками менять дату в календаре) ?
Homo sum et nihil humani a me alienum puto...
Re[4]: Меню + popup фокус
От: Sclown  
Дата: 18.01.07 13:52
Оценка:
Здравствуйте, Вумудщзук, Вы писали:

>>К сожалению popup menu (CreatePopupMenu) забирает фокус, но при этом не становится активным. И этим отлючатся от любого обычного окна.

>>PS. Дату видел... Просто наболело. Бьюсь уже месяц — не знаю как сделать такое окно, которое получало бы фокус, но не активацию...
В>а почему ты уверен, что попап окно забирает фокус?
В>то есть тебе нужно сделать нечто вроде поведения календаря в контроле date & time picker (при активации календаря фокус остаётся на главном окне, но тем не менее можно стрелками менять дату в календаре) ?
Проверял через ::GetFocus() и ::GetActiveWindow() по таймеру...
Насчет календаря — что-такое...
Re[5]: Меню + popup фокус
От: Вумудщзук Беларусь  
Дата: 18.01.07 15:28
Оценка:
>Проверял через ::GetFocus() и ::GetActiveWindow() по таймеру...
>Насчет календаря — что-такое...
винда в таких случаях (тот же календарь, например) показывает окно без активации [ShowWindow(SW_SHOWNA)] и вертит свой цикл сообщений, в котором ловит во1х мышиные клики, не попадающие в окно, закрывая его при этом, и во2х клавиатурные сообщения — они пересылаются окну; ну и ещё по мелочам WM_KILLFOCUS, WM_SYSKEYDOWN, WM_ESCAPE, WM_QUIT (они все закрывают окно). Этим как раз и достигается, что фокус стоит на поле ввода, но клавиатурные сообщения идут в окно, которое ведёт себя так, будто фокус на нём. А вот уже если по окну кликнуть мышью, тогда оно действительно получает фокус. Ну, а если и этого надо избежать, то ловим WM_MOUSEACTIVATE и возвращаем MA_NOACTIVATE.
Homo sum et nihil humani a me alienum puto...
Re[6]: Меню + popup фокус
От: Sclown  
Дата: 30.01.07 15:05
Оценка:
Здравствуйте, Вумудщзук, Вы писали:

А как тогда отловить переключение в другое приложение. WM_ACTIVATE и WM_KILLFOCUS в цикле сообщений не ходят...Или что-то упустил?
Re[7]: Меню + popup фокус
От: Вумудщзук Беларусь  
Дата: 30.01.07 15:35
Оценка:
>А как тогда отловить переключение в другое приложение. WM_ACTIVATE и WM_KILLFOCUS в цикле сообщений не ходят...Или что-то упустил?

но главному-то окну WM_KILLFOCUS приходит. хотя это коряво получается...

ну, можно опять же посмотреть, как винда показывает попап менюшки
Homo sum et nihil humani a me alienum puto...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.