информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[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 - скорее признак плохого стиля, чем хорошего. Мало того, что ООП тут и не пахнет - есть риск появления как неиспользуемого (сообщения не стало, а код из этих функций удалить забыли), так и некорректного кода (передали в функцию сообщение, а она не знает, как его обработать, ветку в свиче забыли написать). В общем, "не советую, молодой человек, не советую - съедят." Общий код обычно не должен содержать ветвлений.
<programming> Поиск 






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach