在应用程序重新启动时保存编辑控件用户输入和还原的有效方法C ++ Visual Studio

时间:2016-05-06 19:18:49

标签: c++ visual-studio-2015 dialogresult editcontrol

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

问题是,"最有效的方法是什么?"。我的研究最终进入了#DialogResult"物业,但我在VS 2015中找不到这个物业

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

所有帮助非常感谢,

-SDEV

1 个答案:

答案 0 :(得分:0)

这通常使用应用程序的“配置文件”存储来完成,该存储曾经位于.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);,然后调用它{{1}变量将包含当前文本。要保存值,请将新文本值分配给变量,然后调用CString

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

如果您的编辑控件没有任何变量,您可能想要通过进入对话框的资源编辑器,右键单击编辑控件,然后从菜单中选择“添加变量”来添加一个变量。您可以选择是否要添加控件对象(MyEditControl.SetWindowText(MyString);),或类似CEdit

您还可以使用非MFC Win32 API访问编辑控件的文本 - 这首先要以某种方式获取控件的窗口句柄,然后使用CString发送::SendMessageWM_GETTEXT消息发送给控件。

祝你好运。