В программе MFC, как передавать данные между различными диалогами? - PullRequest
3 голосов
/ 17 сентября 2009

В веб-разработке, когда мы хотим передать что-то между различными страницами, мы можем использовать Session для сохранения данных. Но что мы можем использовать в MFC для хранения этих вещей?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 17 сентября 2009

Типичные приложения MFC будут иметь архитектуру Document-View-Frame. Данные хранятся в объекте Document и доступны глобально. Вы можете получить к нему доступ где угодно через AfxGetMainWnd ().

AfxGetApp () также даст вам указатель на ваше основное приложение, которое является еще одним хорошим местом для хранения данных, если вы не используете архитектуру Document View. Если данных много, вы можете создать класс для хранения данных, а затем добавить экземпляр в качестве переменной-члена в CWinApp в вашем проекте.

Другой вариант, который я не рекомендую, но я видел, состоит в том, чтобы сами диалоги были переменными-членами в CWinApp, и тогда каждое диалоговое окно может ссылаться на другое. Обычно пользователь нажимает «ОК», но затем диалоговое окно исчезает, но не удаляется. Это означает, что все введенные данные по-прежнему доступны через переменную диалога.

1 голос
/ 17 сентября 2009

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

  1. Сохраните его в глобальной переменной.
  2. Сохраните его в локальном хранилище потока (TLS).
  3. Один диалог отправляет сообщение через SendMessage () или PostMessage () .

С этого момента все становится сложнее.

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