Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] Не слишком благодарное дело - тянуть подход из библиотеки с одной идеологией в библиотеку с другой. 21.07.03 00:29 Число просмотров: 1409
Автор: Ktirf <Æ Rusakov> Статус: Elderman
|
Все-таки кое-что напишу на тему.
Насколько я знаю, в подавляющем большинстве случаев для обмена "сообщениями" между элементами интерфейса вполне достаточно либо непосредственной посылки оконного (WM_) сообщения элементу с заданным именем, либо паттерна publish-subscribe (publish-subscribe, он же Observer, вообще часто является краеугольным камнем при построении пользовательских интерфейсов). Таким образом можно реализовать либо push-доставку информации объекту (WM_), либо pull-доставку (Observer). Второй вариант, имхо, значительно лучше сразу по ряду причин (если есть желание, могу здесь написать подробнее)
Касаемо твоего случая - могу предложить следующее. Для FillControls и DisplayControls в MFC есть очень удобный метод под названием UpdateData. Этот метод позволяет загружать данные из контролов в переменные с одновременной проверкой данных на корректность (validation), а при другом значении параметра этот же метод записывает данные из переменных в контролы. Не нужно заниматься написанием для каждого класса функций наподобие описанных, просто описываешь, что нужно делать, на уровне формы, а не каждого элемента интерфейса. Общий код объединяешь в функции, все остальное - для каждого конкретного сообщения отдельно.
Предвижу возражения насчет сконцентрированности кода. В моем случае операции по изменению свойств элементов интерфейса не собраны в одном месте. Но подумай сам: а оно тебе надо? Какой выигрыш от этого ты получаешь? Замечу, что те свичи, которые ты пишешь в FillControls и DisplayControls - скорее признак плохого стиля, чем хорошего. Мало того, что ООП тут и не пахнет - есть риск появления как неиспользуемого (сообщения не стало, а код из этих функций удалить забыли), так и некорректного кода (передали в функцию сообщение, а она не знает, как его обработать, ветку в свиче забыли написать). В общем, "не советую, молодой человек, не советую - съедят." Общий код обычно не должен содержать ветвлений.
|
|
|