Эффективный способ сохранения пользовательского ввода Edit Control и восстановления при перезапуске приложения C ++ Visual Studio

Я только что был брошен на проект, написанный на C ++ на VS. У меня есть диалоговое окно с Edit Controls, где пользователь вводит MAC-адрес. Я хотел бы сохранить эту информацию, когда происходит событие «при нажатии». Это сделано для того, чтобы при выходе из приложения оно сохранялось и могло быть загружено снова. Я естественно сохранил бы это в файл и использовал бы основной файловый ввод / вывод.

Вопрос такой: «Какой самый эффективный способ сделать это?». Мои исследования оказались в собственности «DialogResult», но я не смог найти это свойство в VS 2015

https://msdn.microsoft.com/en-us/library/65ad5907(v=vs.100).aspx

Вся помощь очень ценится,

-SDEV

1

Решение

Обычно это делается с помощью хранилища «Профиль» приложения, которое раньше находилось в файле .INI, но теперь находится в реестре, в разделе Программный ключ приложения.

В приложении MFC InitInstance()обычно есть автоматически сгенерированный вызов SetRegistryKey, Это берет идентификационную строку и устанавливает хранилище профиля приложения. Итак, если в вашем приложении этого нет, вам нужно добавить что-то вроде SetRegistryKey(_T("MyCompanyGroupOrAppName"));,

Тогда есть API для хранения и поиска информации. Для редактирования контрольного текста, вы, вероятно, хотите сохранить его с CWinApp::WriteProfileString, Таким образом, в вашем обработчике вы бы получили текст из элемента управления редактирования в CString, а затем сохранить его с

AfxGetApp()->WriteProfileString(_T("SectionName"), _T("MacAddress"), MyMacAddressString);

Чтобы вернуть строку позже, используйте что-то вроде:

CString MyMacBeforeTheCrash = pApp->GetProfileString(_T("SectionName"), _T("MacAddress"));

Вот несколько ссылок на документацию:

Похоже, вы не уверены, как получить доступ к тексту из элемента управления редактирования. Есть несколько способов сделать это, но это зависит от того, как настроен ваш диалог.

Если ваш элемент управления имеет CString переменная, связанная с ним, с DDX (Dialog Data Exchange), затем вы вызываете функцию-член вашего диалогового класса: UpdatData(TRUE); и после этого его CString переменная будет содержать текущий текст. Чтобы сохранить значение, вы назначаете новое текстовое значение переменной, затем вызываете UpdateData(FALSE);,

Если у вас есть доступ к переменной класса для элемента управления редактирования ( CEdit объект), вы можете скопировать текст элемента управления редактирования в CString с MyEditControl.GetWindowText(MyString);, Чтобы скопировать текст строки в элемент управления редактирования, выполните: MyEditControl.SetWindowText(MyString);,

Если для вашего элемента управления редактированием нет какой-либо переменной, вы можете добавить ее, перейдя в редактор ресурсов своего диалогового окна, щелкнув правой кнопкой мыши элемент управления для редактирования и выбрав в меню «Добавить переменную». Вы сможете выбрать, хотите ли вы добавить объект управления ( CEdit) или что-то вроде CString,

Вы также можете получить доступ к тексту элемента управления редактирования, используя не-MFC Win32 API — для этого сначала нужно получить дескриптор окна элемента управления, а затем использовать ::SendMessage отправлять WM_GETTEXT а также WM_SETTEXT сообщения для контроля.

Удачи.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]