我刚刚在VS上用C ++编写了一个项目。我有一个带编辑控件的对话框,用户可以在其中输入MAC地址。我希望在点击事件"时保存此信息。发生。这样,当应用程序退出时,会保存并可以再次加载。我自然会将其保存到文件并使用基本文件I / O.
问题是,"最有效的方法是什么?"。我的研究最终进入了#DialogResult"物业,但我在VS 2015中找不到这个物业
https://msdn.microsoft.com/en-us/library/65ad5907(v=vs.100).aspx
所有帮助非常感谢,
-SDEV
答案 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
发送::SendMessage
和WM_GETTEXT
消息发送给控件。