Недоступность кнопок на тулбаре
От: potap  
Дата: 25.03.14 07:00
Оценка:
Добрый день.
У меня в Document-View программе два view-шника. Обработчики некоторых кнопок тулбара реализованы в одном из них. Когда активен (щелкнут мышкой) второй view-шник, то кнопки становятся недоступны. Как этого избежать?
Заранее спасибо.
Re: Недоступность кнопок на тулбаре
От: AlexGin Беларусь  
Дата: 25.03.14 09:57
Оценка: -1
Здравствуйте, potap, Вы писали:

P>Добрый день.

P>У меня в Document-View программе два view-шника. Обработчики некоторых кнопок тулбара реализованы в одном из них. Когда активен (щелкнут мышкой) второй view-шник, то кнопки становятся недоступны. Как этого избежать?
P>Заранее спасибо.

Проследить, что происходит с сообщениями (ON_COMMAND и ON_UPDATE_COMMAND) от кнопок тулбара.
Вероятнее всего, что они где-то теряются.

Возможно, потребуется переопределить виртуальный метод OnCmdMsg (в окне главного фрейма), с тем, чтобы не терялись сообщения.
Re: Недоступность кнопок на тулбаре
От: Carc Россия http://www.amlpages.com/home.php
Дата: 25.03.14 10:57
Оценка:
Здравствуйте, potap, Вы писали:

P>Добрый день.

P>У меня в Document-View программе два view-шника. Обработчики некоторых кнопок тулбара реализованы в одном из них. Когда активен (щелкнут мышкой) второй view-шник, то кнопки становятся недоступны. Как этого избежать?
P>Заранее спасибо.
Переставить обработчики в CDocument, а уже из них пусть CDocument сам стучится к нужным CView — тогда будут доступны постоянно. Вне зависимости где фокус ввода (ну или можно как-то хитрее логику переделать уже внутри CDocument если нужно).
Aml Pages Home
Re[2]: Недоступность кнопок на тулбаре
От: Carc Россия http://www.amlpages.com/home.php
Дата: 25.03.14 10:59
Оценка:
Здравствуйте, AlexGin, Вы писали:

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


P>>Добрый день.

P>>У меня в Document-View программе два view-шника. Обработчики некоторых кнопок тулбара реализованы в одном из них. Когда активен (щелкнут мышкой) второй view-шник, то кнопки становятся недоступны. Как этого избежать?
P>>Заранее спасибо.

AG>Проследить, что происходит с сообщениями (ON_COMMAND и ON_UPDATE_COMMAND) от кнопок тулбара.

AG>Вероятнее всего, что они где-то теряются.
AG>Возможно, потребуется переопределить виртуальный метод OnCmdMsg (в окне главного фрейма), с тем, чтобы не терялись сообщения.
OnCmdMsg здесь нафиг не нужен. С CView можно и без этих фокусов работать. И ничего не теряется, просто запросы CN_UPDATE_COMMAND_UI, и CN_COMMAND идут к активному CView, а обработчики в другом находятся.
Aml Pages Home
Re[2]: Недоступность кнопок на тулбаре
От: potap  
Дата: 26.03.14 07:14
Оценка:
Да, спасибо, так и сделаю


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

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


P>>Добрый день.

P>>У меня в Document-View программе два view-шника. Обработчики некоторых кнопок тулбара реализованы в одном из них. Когда активен (щелкнут мышкой) второй view-шник, то кнопки становятся недоступны. Как этого избежать?
P>>Заранее спасибо.
C>Переставить обработчики в CDocument, а уже из них пусть CDocument сам стучится к нужным CView — тогда будут доступны постоянно. Вне зависимости где фокус ввода (ну или можно как-то хитрее логику переделать уже внутри CDocument если нужно).
Re: Недоступность кнопок на тулбаре
От: potap  
Дата: 26.03.14 08:37
Оценка:
И всё-таки, можно ли достаточно легко и компактно изменить логику передачи команд на такую:
Если есть обработчик (как это программно узнать?) в заданном вьюшнике, то вызывать этот обработчик. Если нет, то действовать как и раньше — пересылать app, mainframe, document, активному view.
?
Re[2]: Недоступность кнопок на тулбаре
От: potap  
Дата: 26.03.14 08:46
Оценка:
Или даже так хочу:
Заданная кнопка обрабатывается ТОЧНО ЭТИМ обработчиком, ЭТОГО вьюшника. Независимо от того, какой вьюшник сейчас активен.
Нельзя?
Re[3]: Недоступность кнопок на тулбаре
От: AlexGin Беларусь  
Дата: 26.03.14 13:13
Оценка: -1 :)
Здравствуйте, potap, Вы писали:

P>Или даже так хочу:

P>Заданная кнопка обрабатывается ТОЧНО ЭТИМ обработчиком, ЭТОГО вьюшника. Независимо от того, какой вьюшник сейчас активен.
P>Нельзя?

А почему бы не перенести обработчик "заданной кнопки" на класс-наследник CMDIFrameWnd и из обработчика в головном окне фрейма уже отсылать сообщение на требуемый "вьюшник"? Конечно, это потребует больше ручной работы, но именно это, на мой взгляд, вариант для такого случая.
Re[4]: Недоступность кнопок на тулбаре
От: potap  
Дата: 26.03.14 20:02
Оценка: :)
Не очень нравится тем, что приходится реакцию на кнопку иметь в 2х местах: в CMainframe и CMyView. Этих кнопок у меня не мало.
Да и несистемно как-то, помнить об этом вечно надо.
Хочется написать где-то некий локальный код, так чтобы все кнопки, включая будущие, обрабатывались по описанной методе.



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

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


P>>Или даже так хочу:

P>>Заданная кнопка обрабатывается ТОЧНО ЭТИМ обработчиком, ЭТОГО вьюшника. Независимо от того, какой вьюшник сейчас активен.
P>>Нельзя?

AG>А почему бы не перенести обработчик "заданной кнопки" на класс-наследник CMDIFrameWnd и из обработчика в головном окне фрейма уже отсылать сообщение на требуемый "вьюшник"? Конечно, это потребует больше ручной работы, но именно это, на мой взгляд, вариант для такого случая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.