Каков правильный / принятый дизайн доступа к переменным приложения из класса окна? - PullRequest
7 голосов
/ 18 января 2012

Мой непосредственный контекст - это платформа Windows, однако я мог бы также задать этот же вопрос при работе над пользовательским интерфейсом для другого графического хоста. Я работаю в довольно простой C ++ Winapi, без ATL / MFC. Я не заинтересован в использовании глобальных переменных, а скорее в более привычной практике выполнения задач, связанных с «окном», с данными «приложения».

Я подумал о внедрении шаблонов стилей mvvw или mvc, но прежде чем продолжить, я хотел бы высказать некоторые мнения сообщества, которые, как мне кажется, являются бесчисленными опытными разработчиками и дизайнерами.

В классе My Application есть члены Window. Должен ли класс Window быть разработан со ссылкой на приложение? Или есть лучший способ, чем этот?

1 Ответ

1 голос
/ 20 января 2012

Win API окна дает вам Set / GetProperty (), который позволяет вам определять указатель на то, что вы хотите (например, на свой собственный объект окна). Однако, как я знаю, это довольно медленно.

Другая возможность - использовать карту, в которой указатель окон Win API используется в качестве ключей, а значение - это ваш оконный объект.Это намного быстрее, но куда вы помещаете эту карту, если у вас нет глобалов?

Как предполагает Самуэль, синглтон позволяет вам получить объект, который почти такой же, как глобальный,Затем вы можете получить свой оконный объект, используя указатель окна Win API в качестве ключа, и он возвращает ваш объект.

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

Почему вы не используете Qt?это уже на C ++, и вам не нужно беспокоиться об этих деталях ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...