保存“编辑控件”用户输入并在应用程序重新启动C++Visual Studio时进行恢复的有效方法
Efficient way to save Edit Control user input and restore when application restarts C++ Visual Studio
我刚刚在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_GETTEXT
和WM_SETTEXT
消息。
祝你好运。
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio 2019:插入多个C++风格的单行注释
- Visual Studio Code "undefined reference to `WinMain@16'"
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- Visual Studio中的函数声明和函数定义问题
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- Visual Studio mkl_link_tool.exe链接错误
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 不同的Visual Studio版本中缺少.dll
- 用Visual Studio在C++中嵌入Julia
- Visual Studio 2017循环自动向量化问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- cv:内存位置的异常 - 运行 openCV 代码 Visual Studio 2013 & Visual Studio 2017 - Windows 7
- 如何在 Visual Studio 2012 Visual c++ 中动态分配内存
- Visual Studio -在Visual Studio之外运行项目