MFC中使用ini文件管理配置项

 

step 1: 在BOOL CMyApp::InitInstance()中添加如下代码来定义ini文件名:
------------------------------------------------------------------------
    TCHAR szModuleName[MAX_PATH];
    TCHAR *pszFileName = NULL;

    // Setup INI path, Help path
    if(GetModuleFileName(NULL, szModuleName, sizeof(szModuleName)))   
    {
        if((pszFileName = _tcsrchr(szModuleName, '\\')) != NULL)
        {
            pszFileName++;
            free((void*)m_pszProfileName);
            free((void*)m_pszHelpFilePath);
            lstrcpy(pszFileName, _T("MyFile.INI"));
            m_pszProfileName = _tcsdup(szModuleName);
            *pszFileName = _T('\0');
            m_pszHelpFilePath =_tcsdup(szModuleName);
        }
    }
------------------------------------------------------------------------

step 2:
定义ini文件
---------------------
[SectionA]
SwitchA=1
SwitchB=0
......

[SectionB]
......
---------------------

step 3:
在需要访问配置文件某配置项内容时使用如下代码:
------------------------------------------------------------------------
#define SECTION_KEY  _T("SectionA")
#define SWITCH_ON    _T("SwitchA")
    if (AfxGetApp()->GetProfileInt(SECTION_KEY, SWITCH_ON, 0) == 1)
        s_bSwitchOn = TRUE;
    else
        s_bSwitchOn = FALSE;
------------------------------------------------------------------------

我们在编写程序的过程中,有很多要用到出始化,但有很多都写进了注册表,而我们在想修改或者查看的时候必须到注册表里去修改,而不是直接到一个程序目录下的ini文件里查看或者修改,怎么使可以直接生成的ini文件能写进Debug 呢?而不写进注册表.下面的程序可以帮助我们实现这个目的!!!!

  在应用程序类下的      * App::InitInstance()函数里加入下面的程序语句;

 char czProgName[MAX_PATH];
 CString czN;
 int  iNiValue=0;

 iNiValue= GetModuleFileName(0,czProgName,MAX_PATH);
 if(iNiValue<= 0)
  return TRUE;
 czProgName[strlen(czProgName)-3] = '/0'; 
 strcat(czProgName,"ini");

// 这个GetModuleFileName() 的作用是得到当前目录下的**.exe文件,所以我们要把后缀去掉,直接用strcat()函数把它改长ini后缀.

//再清除Ini变量

   free((void*) m_pszProfileName);
   m_pszProfileName =_tcsdup(_T(czProgName));

 //清除注册表键值变量所分配的内存空间 .
 free((void*)m_pszRegistryKey);
 m_pszRegistryKey = NULL;

加入上面的语句以后,我们就可以在需要的地方直接用:

当然在使用的时候要定义:  

 CWinApp* theApp = NULL;

theApp = AfxGetApp();

然后直接用

theApp ->WriteProfileString( , ,)函数写入ini文件.

在需要读出的地方直接用  :

theApp ->GetProfileString (              )函数直接读出;

当然在读取整数的时候,我们可以分别用

WriteProfileInt (        )和 GetProfileInt (        )进行实现.

当你打开你的Debug 下的文件时,你可以看到一个*.ini文件了!!!!!!!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值