void CgetfreediskDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
ULARGE_INTEGER   FreeAv,TotalBytes,FreeBytes;
CString Driver,strFreeBytes;
Driver=_T("E:\\");
     if(GetDiskFreeSpaceEx(Driver,&FreeAv,&TotalBytes,&FreeBytes))   
     {   
             //格式化信息,并显示出来
            strFreeBytes.Format("%u",FreeBytes.QuadPart);   
        }
 WritePrivateProfileString("free","str1",strFreeBytes,".\\Config.ini");}

解决方案 »

  1.   

    strFreeBytes.Format("%I64u",FreeBytes.QuadPart);   
      

  2.   

    用64位变量就可以了void CgetfreediskDlg::OnBnClickedButton1()
    {
        // TODO: 在此添加控件通知处理程序代码
    __int64   FreeAv,TotalBytes,FreeBytes;
    CString Driver,strFreeBytes;
    Driver=_T("E:\\");
         if(GetDiskFreeSpaceEx(Driver,(PULARGE_INTEGER),(PULARGE_INTEGER)&FreeAv,(PULARGE_INTEGER)&TotalBytes,(PULARGE_INTEGER)&FreeBytes))   
         {   
                 //格式化信息,并显示出来
                strFreeBytes.Format("%I64d",FreeBytes);   
            }
         WritePrivateProfileString("free","str1",strFreeBytes,".\\Config.ini");}
      

  3.   

    调试的时候看到的
    FreeBytes.QuadPart是可用字节数15695372288
    可得到的strFreeBytes却变成了2810470400
      

  4.   

    http://blog.csdn.net/caimouse/archive/2007/11/01/1861966.aspx
      

  5.   

    搞定....不过二楼的代码有多出来一个,(PULARGE_INTEGER),
      

  6.   

    WritePrivateProfileString参数是不是有点问题?
    我觉得正确的应该是:
    WritePrivateProfileString("free","str1","",strFreeBytes,".\\Config.ini");
      

  7.   

    这个真不懂....我写代码基本靠复制贴粘....不过结果还是对的...config.ini保存正确.....