2

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

问题是,“最有效的方法是什么?”。我的研究最终出现在“DialogResult”属性中,但我在 VS 2015 中找不到该属性

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

非常感谢所有帮助,

-SDEV

4

1 回答 1

0

这通常使用应用程序的“配置文件”存储来完成,该存储空间以前位于 .INI 文件中,但现在位于注册表中,位于应用程序的 Software 项下。

在 MFC 应用程序中InitInstance(),通常会自动生成对SetRegistryKey. 这需要一个标识字符串并设置应用程序的配置文件存储。因此,如果您的应用缺少此功能,则需要添加类似SetRegistryKey(_T("MyCompanyGroupOrAppName"));.

然后是用于存储和检索信息的 API。对于编辑控件文本,您可能希望将其保存为CWinApp::WriteProfileString. 因此,在您的处理程序中,您会将编辑控件中的文本放入 aCString中,然后将其保存为

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

要稍后取回字符串,请使用以下内容:

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

以下是文档的一些链接:

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

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

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

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

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

祝你好运。

于 2016-05-07T05:23:56.347 回答