关闭对话框重启还保留着上次的数据--MFC中如何把数据保存到注册表

来源:互联网 发布:步惊云软件下载 编辑:程序博客网 时间:2024/06/09 23:54

方法一:

在Dialog内部添加一个重构初始化函数OnInitDialog();在初始化函数中把注册表的数据拿出来赋值给相应的成员变量,如下表达式:

nValue =AfxGetApp()->GetProfileInt(lpAppName String,lpKeyName String,nDefault Long);

其中:

lpAppName String,欲在其中搜索条目的小节名。这个字串不区分大小写

lpKeyName String,欲获取的项名或条目名。这个字串不区分大小写

nDefault Long,指定在条目未找到时返回的默认值

然后更新到界面UpdateData(FALSE);

以上就已经完成了从注册表拿数据并更新到界面的过程,接下来添加“确定”控件,在控件下添加响应函数,在函数内部实现

如何把数据写入到注册表里去,首先把界面上的值更新到变量里面UpdateData(TRUE);然后把变量的值写入到注册表,如下表达式:

AfxGetApp()->WriteProfileInt(lpAppName String,lpKeyName String,int nValue);

其中:

lpAppName String,欲在其中搜索条目的小节名。这个字串不区分大小写

lpKeyName String,欲获取的项名或条目名。这个字串不区分大小写

int nValue,指要存入的成员变量的名称

到此为止就实现了数据存入注册表,关闭对话框,下次重启还保留着上次的数据。方法一所有函数都在类内部,没有在调用这个对话框

的文件里添加任何代码,下面介绍一下方法二,所有代码实现全在调用对话框的那个文件内部实现。

方法二:

找到调用这个对话框的函数,也就是外部文件定义这个类对象的地方。
在模态对话框调用语句DoModal();之前添加方法一中从注册表读值的函数赋给相应的成员变量,格式如下:
dlg.nValue = AfxGetApp()->GetProfileInt(lpAppName String,lpKeyName String,nDefault Long);
其中dlg为对话框的对象。
在调用语句DoModal();之后添加方法一中把成员变量的值写入注册表的函数,格式如下:
AfxGetApp()->WriteProfileInt(lpAppName String,lpKeyName String,dlg.nValue);
其中dlg为对话框的对象。
需要注意的是:这样子做不需要用UpdateData去更新数据,数据更新会在调用对话框的OnInitDialog()与OnOk()时更新。
当然方法一与方法二的读与写部分可以任意组合来实现。

方法三:

当碰到有很多对话框的数据都需要保存到注册表时也可以把所有数据的读和写分别写在两个函数里,然后在调用各个对话框函数的
构造函数内调用读的函数,在析构函数内调用写的函数。所有与注册表的数据交流全部由局部变量来实现,然后,把局部变量与成员
变量的数据交换分别写在DoMadol()函数的前后,前面把局部变量的值赋给成员变量,后面把成员变量的值赋给局部变量。

一些MFC的学习心得,分享出来交流一下,有错误希望指正,共同进步!





1 0
原创粉丝点击