Настройки приложения.
От: Ellin Россия www.rsdn.ru
Дата: 25.08.05 16:10
Оценка:
Так есть ли какие-либо стандартные классы для хранения настроек? Или в каждом случае это должен быть свой набор классов?
Надо хранить так:
Главное окно приложения: (x,y,Width,Hieght)(доступ к значениям через имя ["dfsfs"])
Оно также содержит: ListCtr(список столбцов, Тип, стили и т.д.)(доступ к значениям через имя ["dfsfs"])
Оно также содержит: Столбе:Идентификатор,ширина,форматация вывода)(доступ к значениям через ИД [10])
и т.д.
Я до этого делал так:
Есть класс — значение(В конструкторе из реестра загружаем/В деструкторе сохраняем). Далее класс Column — список значений, далее класс ListCtrl, Далее класс MainFrame и т.д.
Неужели это лучшее решение? Кто-нибудь сталкивался с подобным, может есть уже готовые паттерны или решения? Вобщем какого ваше мнение?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Настройки приложения.
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 25.08.05 17:24
Оценка:
Здравствуйте, Ellin, Вы писали:

E>Так есть ли какие-либо стандартные классы для хранения настроек? Или в каждом случае это должен быть свой набор классов?

E>Неужели это лучшее решение? Кто-нибудь сталкивался с подобным, может есть уже готовые паттерны или решения? Вобщем какого ваше мнение?

Ну вас морочит Эдак вы само приложение не напишете.
Берите хмель:

<configuration>
  <container name="listControl">
    <parameter name="width" type="int" />
    <parameter name="height" type="long" />
    <container name="items">
      <parameter name="height" type="unsigned long" />
    </container>
  </container>

  <parameter name="whateverElse" type="CString" />
</configuration>


И с помощью XSLT во время Pre-build Step "кодогенерируйте" себе класс:

class _items
{
public:
  unsigned long height;

  _items(...)
  {
    // Загрузка
  }

  ~_items(void)
  {
    // Сохранение
  }
};

class _listControl
{
public:
  int width;
  long height;
  _items items;

  _listControl(...)
  {
    // Загрузка
  }

  ~_listControl(void)
  {
    // Сохранение
  }
};

class configuration
{
public:
  _listControl listControl;
  CString whateverElse;

  configuration(...)
  {
    // Загрузка
  }

  ~configuration(void)
  {
    // Сохранение
  }    
};


И велкам, как говорится. Ни тебе индексации — все быстро и безопасно.
HgLab: Mercurial Server and Repository Management for Windows
Re: Настройки приложения.
От: deadSLAYER  
Дата: 25.08.05 19:40
Оценка:
Здравствуйте, Ellin, Вы писали:


E>Кто-нибудь сталкивался с подобным, может есть уже готовые паттерны или решения? Вобщем какого ваше мнение?


Если кодить с использованием mfc — может быть удобнее будет использовать сериализацию (решение примерно то же, что и было но выглядит аккуратнее имхо).

Если нет — либо наследовать эти классы от чего либо персистентного либо делать своего рода фабрику объектов которая будет читать значения из хранилища (реестра) и сетапить их на ничего не подозревающие контролы (либо давать их конструкторам).

Хотя, по моему мнению, контролы не должны подвергаться модификации (работать с какими-то специальными классами значений) изза того что их состояние нужно хранить постоянно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.