我是靠谱客的博主 干净彩虹,最近开发中收集的这篇文章主要介绍MFC ini 文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MFC ini 文件

1 与 .ini 文件相关的 API 有两类:
1)操作系统配置文件 Win.ini 的函数

GetProfileSection
GetProfileString
GetProfileInt
WriteProfileSection
WriteProfileString

2)操作用户自定义配置文件 PrivateProfile.ini 的函数

GetPrivateProfileSectionNames
GetPrivateProfileSection
GetPrivateProfileString
GetPrivateProfileInt
GetPrivateProfileStruct
WritePrivateProfileSection
WritePrivateProfileString
WritePrivateProfileStruct

在这里插入图片描述

win.ini

主要分为两类api:
  不带Private :操作的系统的ini文件
  带Private : 操作的是软件自己的ini文件
在这里插入图片描述

C:Windowswin.ini

在这里插入图片描述在这里插入图片描述
我程序编译用的unicode,只能正确识别ansi的INI

1 封装

首先,我们要添加一个头文件,具体操作以前已经介绍,不妨命名为iniconfig.h,此后在里面定义一个类:

#ifndef _INICONFIG_H

#define _INICONFIG_H

#include <Windows.h>

#include <stdio.h>

class CIniConfig

{

public:

    CIniConfig(char* file)

    {

        strcpy(file_name, file);

    }

    // getter

    unsigned GetNumber(char* section_name, char* key_name)

    {

        return GetPrivateProfileIntA(section_name, key_name, 0, file_name);

    }

    void GetString(char* section_name, char* key_name, char* out_buf)

    {

        GetPrivateProfileStringA(section_name, key_name, "", out_buf, 100, file_name);

    }

    // setter

    void SetNumber(char* section_name, char* key_name, unsigned val)

    {

        char buf[100] = { 0 };

        sprintf(buf, "%d", val);

        WritePrivateProfileStringA(section_name, key_name, buf, file_name);

    }

    void SetString(char* section_name, char* key_name, char* in_buf)

    {

        WritePrivateProfileStringA(section_name, key_name, in_buf, file_name);

    }

private:

    char file_name[MAX_PATH];

};

#endif  // _INICONFIG_H

接着,在源程序中要包含这个类#include “iniconfig.h”,对“写入ini”按钮进行操作,用这个类定义变量CIniConfig m_ini(szIniPath);但是我们还要寻找路径以便存放ini文件GetCurrentDirectory(MAX_PATH, szIniPath); lstrcat(szIniPath, “//a.ini”);这两句是获得当前程序的路径并设置ini文件的存放路径,其中ini文件命名为a.ini,然后使用以下

m_ini.SetString("section1", "key1", "value1");
m_ini.SetString("section1", "key2", "value");

m_ini.SetString("section2", "key1", "value2");

m_ini.SetNumber("section2", "key2", 22);

再就是“读取ini”按钮的操作为,

char szValue[50] = {0};

GetCurrentDirectory(MAX_PATH, szIniPath);

lstrcat(szIniPath, "//a.ini");

CIniConfig m_ini(szIniPath);

m_ini.GetString("section1", "key1", szValue);

MessageBox(szValue, NULL, MB_OK);

int iValue;

iValue = m_ini.GetNumber("section2", "key2");

sprintf(szValue, "%d", iValue);

MessageBox(szValue, NULL, MB_OK);

最后运行一下程序,然后使用一下。这里说明一下函数sprintf函数在转换变量类型时用途很大,可以在平时多注意使用该函数,比其他的强制转换要好的多,也不用记得那么复杂,就一个函数,知道怎样使用,在变量转换类型时就能灵活自如。

本操作并不复杂,很简单,不过很多地方值得学习,学会简单的才能输入学习复杂的。加油!

测试工程 界面

在这里插入图片描述

在这里插入图片描述

1

INI文件也有一个问题,就是大小不能超过64k(我好像记得是这样),因此太多的配置存储在ini文件中就不行了。

最后

以上就是干净彩虹为你收集整理的MFC ini 文件的全部内容,希望文章能够帮你解决MFC ini 文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部