Существует иерархия классов (приведена ниже): класс А1 включает в себя объекты классов А2 и А3 (по одной штуке).
А2 -- список файлов, а А3 -- кнопки плейера.
Требуется: при нажатии на кнопку плейера не отдавать ему фокус, а оставлять у списка.
Проблема:
-- классы А2 и А3 ничего не знают друг о друге;
-- класс А1 знает все о А2 и А3, но он не получает сообщения потери и получения фокуса от А2 и А3.
Здравствуйте, EugeneLed, Вы писали:
EL> Существует иерархия классов: класс А1 включает в себя объекты классов А2 и А3 (по одной штуке). EL>А2 -- список файлов, а А3 -- кнопки плейера. EL> Требуется: при нажатии на кнопку плейера не отдавать ему фокус, а оставлять у списка. EL> Проблема: EL> -- классы А2 и А3 ничего не знают друг о друге; EL> -- класс А1 знает все о А2 и А3, но он не получает сообщения потери и получения фокуса от А2 и А3.
Если требуется, чтобы объект A3 вообще не получал фокус, то
Здравствуйте, Axc, Вы писали:
Axc>Здравствуйте, EugeneLed, Вы писали: EL>> у класса A3 сообщение OnSetFocus вызывается далеко не во всех случаях Axc>А когда оно не вызывается?
Всего есть около десяти кнопок. При щелчке на двух из них, сообщение вызывается. В остальных случаях -- нет.
Здравствуйте, EugeneLed, Вы писали:
EL>>> у класса A3 сообщение OnSetFocus вызывается далеко не во всех случаях
EL> Всего есть около десяти кнопок. При щелчке на двух из них, сообщение вызывается. В остальных случаях -- нет.
А точно ли им сопоставлены переменные класса A3?
Или переменная данного класса сопоставлена всему окну с кнопками?
Здравствуйте, Axc, Вы писали:
Axc>А точно ли им сопоставлены переменные класса A3? Axc>Или переменная данного класса сопоставлена всему окну с кнопками?
Да, А3 -- все окно с кнопками. Кнопки являются членами класса А3. Но А3 должен получать фокус при нажатии на кнопку, если я не ошибаюсь. По крайней мере, список фокус теряет. У меня самого есть следующие варианты решения:
1) Создать класс, производный от используемого класса кнопки, способный принимать сообщения ON_SETFOCUS. <Нежелательно>
2) В самом списке создать обработчик потери фокуса (ON_KILL_FOCUS), который сравнивал бы окна-получатели фокуса с теми окнами, которым фокус достаться не должен <Еще более нежелательно>
EL> Да, А3 -- все окно с кнопками. Кнопки являются членами класса А3. Но А3 должен получать фокус при нажатии на кнопку, если я не ошибаюсь. По крайней мере, список фокус теряет. У меня самого есть следующие варианты решения:
EL>1) Создать класс, производный от используемого класса кнопки, способный принимать сообщения ON_SETFOCUS. <Нежелательно>
Да, похоже именно так. Фокус ввода таки получает именно кнопка. Или посмотреть в сторону WM_ACTIVATE.
Здравствуйте, Axc, Вы писали:
Axc>Или посмотреть в сторону WM_ACTIVATE.
К сожалению, данное сообщение не сможет определить направление передачи фокуса. А просто не отдавать его никому нельзя, т.к. в плейер много окошек, и плейлист с кнопками лишь его часть.