保存“编辑控件”用户输入并在应用程序重新启动C++Visual Studio时进行恢复的有效方法

Efficient way to save Edit Control user input and restore when application restarts C++ Visual Studio

本文关键字:Studio C++Visual 恢复 方法 有效 重新启动 应用程序 编辑控件 控件 编辑 用户      更新时间:2023-10-16

我刚刚在VS上被一个用C++编写的项目抛弃。我有一个带有编辑控件的对话框,用户可以在其中输入MAC地址。我想在"点击事件"发生时保存此信息。这样,当应用程序退出时,它就会被保存并可以再次加载。我自然会把它保存到文件中,并使用基本的文件I/O。

问题是,"最有效的方法是什么?"。我的研究最终进入了"DialogResult"属性,但我在VS 2015 中找不到该属性

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

非常感谢所有的帮助,

-SDEV

这通常使用应用程序的"Profile"存储来完成,该存储以前位于.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"));

以下是文档的一些链接:

  • CWinApp::SetRegistryKey
  • CWinApp::WriteProfileString
  • CWinApp::GetProfileString

您似乎不确定如何从编辑控件访问文本。有几种方法可以做到这一点,但这取决于对话框的设置方式。

如果您的编辑控件有一个与DDX(对话数据交换)相关联的CString变量,则调用对话框类的成员函数:UpdatData(TRUE);,之后,其CString变量将包含当前文本。要保存值,请将新的文本值分配给变量,然后调用UpdateData(FALSE);

如果您有权访问编辑控件的类变量(CEdit对象),则可以使用MyEditControl.GetWindowText(MyString);将编辑控件的文本复制到CString。要将字符串的文本复制到编辑控件中,请执行:MyEditControl.SetWindowText(MyString);

如果您的编辑控件没有任何类型的变量,您可能希望通过进入对话框的资源编辑器,右键单击编辑控件,然后从菜单中选择"添加变量"来添加一个。您可以选择是要添加一个控制对象(CEdit),还是类似于CString的对象。

您还可以使用非MFC Win32 API访问编辑控件的文本——这包括首先以某种方式获取控件的窗口句柄,然后使用::SendMessage向控件发送WM_GETTEXTWM_SETTEXT消息。

祝你好运。