MFC之静态调用DLL实现编辑ini配置文件
来源:互联网 发布:知乎 被离职 编辑:程序博客网 时间:2024/06/05 20:09
关于ini配置文件操作的api,推荐博文C++操作.ini配置文件的API
题目描述如下:
程序的配置信息一般存储在一个ini文件中,当程序运行时会从ini文件中读取一些启动信息。程序运行过程中也会对这些配置信息进行修改以保存本次程序运行的相关数据。请编写一个简单的配置数据操作类,主要包括以下功能:
(1)读取ini文件中指定键的值。
(2)修改ini文件中某个键的值。
(3)删除ini文件中的某个键。
(4)添加新的键到ini文件中。
其实直接用MFC实现即可,但是为了训练一下DLL的调用方式,还是用DLL实现1、利用vc++6.0新建DLL工程
lib.h
#define work2 _declspec(dllexport)extern "C" work2 bool readKey(char* section,char* key,char* value,char* path);extern "C" work2 bool changeKey(char* section,char* key,char* value,char* path);extern "C" work2 bool deleteKey(char* section,char* key,char* path);extern "C" work2 bool addKey(char* section,char* key,char* value,char* path);lib.cpp,里面用到的API都是在windows.h中定义的
#include"lib.h"bool addKey(char* section,char* key,char* value,char* path){return WritePrivateProfileString(section,key,value,path);//向配置文件中写入记录,参数section表示区块,以键值对的形式存储,若果制定路径不包含该文件则创建文件,文件类型为ini}bool deleteKey(char* section,char* key,char* path){return WritePrivateProfileString(section,key,NULL,path);//当value为NULL时,相当于删除该记录}bool changeKey(char* section,char* key,char* value,char* path){return WritePrivateProfileString(section,key,value,path);}bool readKey(char* section,char* key,char* value,char* path){return GetPrivateProfileString("Section1",key,"",value,16,path);//从相应区块中获取键的值,存于value中}
2、在同一工作区间中新建MFC exe工程
静态调用如下:
#define work2 _declspec(dllimport)//导入函数#pragma comment(lib,"work2.lib");extern "C" work2 bool readKey(char* section,char* key,char* value,char* path);extern "C" work2 bool changeKey(char* section,char* key,char* value,char* path);extern "C" work2 bool deleteKey(char* section,char* key,char* path);extern "C" work2 bool addKey(char* section,char* key,char* value,char* path);导入之后即可直接在MFC中使用这些函数了
界面布局如下:
功能实现:
void CWork2TestDlg::OnButton1() //添加配置信息{// TODO: Add your control notification handler code herebool b = false;CString section,key,value;section = "Section1";GetDlgItem(IDC_EDIT1) -> GetWindowText(section);GetDlgItem(IDC_EDIT2) -> GetWindowText(key);GetDlgItem(IDC_EDIT3) -> GetWindowText(value);b = addKey((LPSTR)(LPCTSTR)section,(LPSTR)(LPCTSTR)key,(LPSTR)(LPCTSTR)value,"./work.ini");if(b == false)MessageBox("添加失败");elseMessageBox("添加成功");}void CWork2TestDlg::OnButton3() //删除个顶区块的某个键值对{// TODO: Add your control notification handler code herebool b = false;CString section,key;section = "Section1";GetDlgItem(IDC_EDIT1) -> GetWindowText(section);GetDlgItem(IDC_EDIT2) -> GetWindowText(key);b = deleteKey((LPSTR)(LPCTSTR)section,(LPSTR)(LPCTSTR)key,"./work.ini");if(b == false)MessageBox("删除失败");elseMessageBox("删除成功");}void CWork2TestDlg::OnButton4() //修改{// TODO: Add your control notification handler code herebool b = false;CString section,key,value;section = "Section1";GetDlgItem(IDC_EDIT1) -> GetWindowText(section);b = addKey((LPSTR)(LPCTSTR)section,(LPSTR)(LPCTSTR)key,(LPSTR)(LPCTSTR)value,"./work.ini");if(b == false)MessageBox("修改失败");elseMessageBox("修改成功");}void CWork2TestDlg::OnButton2()//显示整个ini文件{// TODO: Add your control notification handler code herestring iniText = "";ifstream fin("./work.ini");string s;int i = 0;while(getline(fin,s))//按行读取配置文件,组成整个字符串,将显示文本框设置为多行显示,然后再每一行后面添加“\r\n”,就能显示整个文件,目前还没想到更好的办法{iniText.append(s);iniText.append("\r\n");//添加换行标志GetDlgItem(IDC_EDIT4) -> SetWindowText(iniText.c_str());//string转化为CString显示} //GetDlgItem(IDC_EDIT4) -> SetWindowText(iniText);}void CWork2TestDlg::OnButton5() {// TODO: Add your control notification handler code herebool b = false;CString section,key,value="";section = "Section1";GetDlgItem(IDC_EDIT1) -> GetWindowText(section);GetDlgItem(IDC_EDIT2) -> GetWindowText(key);b = readKey((LPSTR)(LPCTSTR)section,(LPSTR)(LPCTSTR)key,(LPSTR)(LPCTSTR)value,"./work.ini");key += "=";if(b == false)MessageBox("获取失败");elseMessageBox(value);}
***要设置文本框的默认值,可以在OnInitDialog()函数中添加初始化的值:
SetDlgItemText(IDC_EDIT1,"Section1");
0 0
- MFC之静态调用DLL实现编辑ini配置文件
- MFC之静态调用DLL实现简易计算器
- MFC静态调用dll
- MFC操作ini配置文件
- MFC读写INI配置文件
- MFC读写INI配置文件
- MFC 读写配置文件 ini
- MFC 读取配置文件ini
- MFC操作ini配置文件
- 初识DLL之MFC动态调用DLL
- DLL专题之MFC静态库
- c++ MFC 读取ini配置文件
- ini配置文件读写实现
- MFC之dll中调用对话框
- MFC DLL (一) 之函数调用
- MFC DLL静态链接
- MFC DLL静态链接
- CALL 调用之DLL实现
- 实时传输协议RTP与RTCP
- VMware安装Arch Linux(桌面环境)
- VS2012编译出来的程序在XP上运行不了怎么办?如何用VS2012 编译以XP为目标平台的程序!
- Design Pattern
- 方向梯度直方图(HOG)和颜色直方图的一些比较
- MFC之静态调用DLL实现编辑ini配置文件
- A - The Dole Queue
- 封装重复工作——判断文本框是否为空
- poj 2115 C Looooops
- Django配置Mysql数据库详解
- leetCode->Add Binary
- set容器总结
- 计算机面试书籍与求职网站推荐
- JX8NET小游戏网公司面试一整套的流程