问一个较复杂的问题....如果有人在TEST.INI文件里面增加新的section name
名和key name名后,我的程序要能够读到它的存在并将其显示到LISTBOX中,然后再通过一个按钮去读INI文件里面的值(当然假设LIST是选中的)...

解决方案 »

  1.   

    这个不难,也就是个读ini配置文件的问题。
    GetPrivateProfileSection
    GetPrivateProfileSectionNames
      

  2.   

    显示到listbox中其实就是读ini出来之后,使用CListBox::AddString
      

  3.   

    这个似乎并不复杂啊。INI文件读写有现成的函数,可以遍历出INI文件中所有的段和键,你的需求是很容易实现的阿。
      

  4.   

    其实读一点都不复杂,,比较麻烦的是要去检测是否有加入新的section name,,如果有的话就要 将其自动添加到LISTBOX中(这一步是在程序开始的时候做的)
      

  5.   

    写个缓存INI 来对比是否是新加的应该定时检测 
      

  6.   

    之前的INI文件内容我已ADDSTRING到LISTBOX中了,,并且一直加在LISTBOX里面..现在我想如果别人有在INI中加新的section name的话,我就将它的section name添加到LISTBOX中
      

  7.   

                       CWinApp* pApp = AfxGetApp();
       pApp->WriteProfileString(strSection, strDestDir, strPath);//向ini中写数据
       CString strDir;
       strDir = pApp->GetProfileString(strSection, strDestDir);//从ini中读数据
              参考一下,希望对你有用。
      

  8.   

    读和写都不是问题呀,,难点是如何查找到INI文件是否有被别人增加过新的section name(至少要用一个函数去查找是否有新增加section name)..其它的如题目
      

  9.   

    ,,难点是如何查找到INI文件是否有被别人增加过新的section name(至少要用一个函数去查找是否有新增加section name)..
    ==你遍历一遍,比较一遍,不就完事了吗?
      

  10.   

    GetPrivateProfileSectionNames得到所有的Section Names,然后逐一查找是否原本已经存在。
      

  11.   

    GetProfileString 应该可以读取,然后可以做处理了
      

  12.   

    如果程序一直开启状态 需要读INI里面新增加的section name,你可以SetTimer来加个时钟在一段时间就去遍历一次,然后和已有的比较,有新的就添加
      

  13.   

    判断文件大小也可以吧 每次启动时候如果不一样大就重新遍历并刷新下LISTBOX
      

  14.   

    谢谢各位,,现在我已找到了一个方法来读取它。。方法如下:
    FilePath+="c:\\ABC.ini";
    ::GetPrivateProfileSectionNames(SectionNames,100,FilePath);  
    for(i=0;i<100;i++,j++)
    {
    if(SectionNames[0]=='\0')
    break;      
                        if(SectionNames[i]=='\0')
    {
    pSectionName=&SectionNames[i-j]; 
    j=-1;        
    // CListBox *plist=(CListBox*)GetDlgItem(IDC_LIST1);
    m_list1.AddString(pSectionName);
    m_list1.SetCurSel(1);  
    if(SectionNames[i+1]==0)
    {
    break;    
    }
    }   

    }