我要做的一个项目是这样的:
首先建一个树视图,三层结构,还有几个checkbox
当选中末节点(第3层)的时候,checkbox1-checkbox5显示该节点的属性,以供勾选
我想知道该怎么写配置文件比较好,包括怎么读入配置文件?
比如 电子产品.手机.NOKIA(树)  属性有 价格,内存,屏幕尺寸,分辨率哪位高人帮我解答一下,我刚接触MFC不久
感激不尽!!!

解决方案 »

  1.   

    Windows操作系统专门为此提供了6个API函数来对配置设置文件进行读、写:  GetPrivateProfileInt() 从私有初始化文件获取整型数值
      GetPrivateProfileString() 从私有初始化文件获取字符串型值
      GetProfileInt 从win.ini 获取整数值
      GetProfileString 从win.ini 获取字符串值
      WritePrivateProfileString 写字符串到私有初始化文件
      WriteProfileString 写字符串到win.ini我们可以把视图类的:OnInitialUpdate() 函数作为程序启动时读取配置文件的入口,配置文件的存储格式如下:[SECTION 1]
    XPos=300
    YPos=200[SECTION 2]
    Text=Hello   仅有两个节,XPos和YPos标明了待显示信息的坐标,而待显示的信息存储在第二节的Text项中,用读取访问私有配置设置文件的API函数将其分别读入到变量m_nXPos,m_nYPos和m_strText中,并通过Invalidate()调用OnDraw()函数,在其内用TextOut函数将该信息在读取的坐标位置显示出来:m_nXPos=GetPrivateProfileInt("SECTION 1", //节名
    "XPos", //项名
    0, //没找到此项时的缺省返回值
    "C:\\test\\debug\\test.ini"); //配置文件的准确路径m_nYPos=GetPrivateProfileInt("SECTION 1","YPos",0,exeFullPath);
    char buf[256];
    len=GetPrivateProfileString("SECTION 2", //节名
    "Text", //项名
    "No Text", //没找到此项时的返回值
    buf, //目标缓冲区地址
    256, //目标缓冲区长度
    "C:\\test\\debug\\test.ini"); //配置文件的准确路径
    for(int i=0;i<len;i++)
    {
     CString str;
     str.Format("%c",buf[i]);
     m_strText+=str;
    }
    Invalidate();   一般配置文件是和应用程序存放在同一个目录中的如果用"C:\\test\\debug\\test.ini"的绝对路径进行设置就会出现路径改变后找不到配置文件的问题,所以应动态搜寻配置文件的存放地址:TCHAR exeFullPath[MAX_PATH]; // MAX_PATH在API中有定义,为128
    int len=GetModuleFileName(NULL,
    exeFullPath, //应用程序的全路径存放地址
    MAX_PATH);
    CString path="\\test.ini"; //配置文件名
    ::strcpy(exeFullPath+len-13,path); //组合出配置文件的全路径   写配置文件也基本类似,只是需要把数值类型的变量格式化成字符串再行存储:str.Format("%d",m_nXPos);
    WritePrivateProfileString("SECTION 1","XPos",str,exeFullPath);
    str.Format("%d",m_nYPos);
    WritePrivateProfileString("SECTION 1","YPos",str,exeFullPath);
    WritePrivateProfileString("SECTION 2","Text",m_strText,exeFullPath);   我们一定遇到过这样的程序:在执行过一遍以后,重启系统会自动加载该程序,其实除了在启动菜单和注册表添加信息外,也可以用WriteProfileString()函数向win.ini的"windows"节的"run"项目添加应用程序的全路径来实现,这要比其它两种方法简便的多,而且也比较安全。二.将信息从INI文件中读入程序中的变量.  1.所用的WINAPI函数原型为:DWORD GetPrivateProfileString(
    LPCTSTR lpAppName, 
    LPCTSTR lpKeyName, 
    LPCTSTR lpDefault, 
    LPTSTR lpReturnedString, 
    DWORD nSize, 
    LPCTSTR lpFileName 
    );   其中各参数的意义:    前二个参数与 WritePrivateProfileString中的意义一样.   lpDefault : 如果INI文件中没有前两个参数指定的字段名或键名,则将此值赋给变量.    lpReturnedString : 接收INI文件中的值的CString对象,即目的缓存器.   nSize : 目的缓存器的大小.   lpFileName : 是完整的INI文件名.  2.具体使用方法:现要将上一步中写入的学生的信息读入程序中.CString strStudName;
    int nStudAge; 
    GetPrivateProfileString("StudentInfo","Name","默认姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");   执行后 strStudName 的值为:"张三",若前两个参数有误,其值为:"默认姓名".  3.读入整型值要用另一个WINAPI函数: UINT GetPrivateProfileInt(
    LPCTSTR lpAppName, 
    LPCTSTR lpKeyName, 
    INT nDefault, 
    LPCTSTR lpFileName 
    );   这里的参数意义与上相同.使用方法如下:nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini"); 
      

  2.   

    miaoshengwu(孤单北半球)
    已经够详细了。