前段阵子帮人写了小程序,结果反应说程序在98环境下保存信息的时候会出错,据说连目录都创建不了
我这里也没有98系统,郁闷至极,第一次发帖,也是第一次给人写东西,希望大家帮忙看看,着急用,谢过了先,还有一个问题就是如何设置使一个对话框在800*600下初始显示为满屏。{
CFile _file;
CUser user;
CString str;
CString filename;
CTime time;

//得到当前系统时间,加入到文件名中
time=time.GetCurrentTime();
str=time.Format("%Y-%m-%d-%H-%M-%S");
filename = str+".txt";         CString _str = "";
FILE *fpOut;
char n_str[64]; //用于读取路径名
CString DataFileName="SavePath.ini"; //得到当前应用程序工作路径
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH); 
sPath.ReleaseBuffer();  int nPos; 
nPos=sPath.ReverseFind ('\\'); 
sPath=sPath.Left(nPos+1); //打开保存路径文件得到文件需要保存的位置
DataFileName = sPath + DataFileName;
if((fpOut=fopen((LPSTR)(LPCTSTR)DataFileName,"r"))==NULL)
{
AfxMessageBox("文件错误!"+DataFileName);
return ;
}
else
{
fseek(fpOut,0L,SEEK_SET);
while(fscanf(fpOut,"%s",n_str)!=EOF)
{
_str=n_str;
}
fclose(fpOut);
}

//如果在文件中未指定保存路径,则设置默认值
if (strlen(_str)==0)
{
_str = "c:\\记录\\";
} //指定目录不存在时,创建文件夹
CString temp;
int i=_str.Find("\\");
temp=_str.Left(i+1);
temp+="\\";
    for (int m=i+1;m<_str.GetLength();m++)
{
temp+=_str[m];
if(_str.GetAt(m)=='\\')
{

CreateDirectory(temp,NULL);

}
}

//向文件中写入数据
filename=_str+filename;
int _fileFlag;
_fileFlag=_file.Open (filename,CFile::modeWrite|CFile::modeCreate|CFile::typeBinary,NULL);

if(_fileFlag==0)
{
MessageBox("Save file failed!", MB_OK);
return;
}
else
{
//tempstr存储着要写入的信息
CString tempstr = "";
_file.Write(tempstr, strlen(tempstr));

}

_file.Close();

AfxMessageBox("记录已保存!");
}

解决方案 »

  1.   

    窗口最大化:
    ::PostMessage(this.m_hWnd,WM_SYSCOMMAND,SC_MAXIMIZE,0);
      

  2.   

    是在dialog的oninitdialog里边调用么?
    提示:error C2660: 'PostMessageA' : function does not take 4 parameters
      

  3.   

    楼上lzzqqq(Jonersen)朋友的代码稍微改改,在dialog的oninitdialog里边调用: 
    ::PostMessage(this->m_hWnd,WM_SYSCOMMAND,SC_MAXIMIZE,0);
      

  4.   

    现在窗口是能最大化了,可是如何能让里边的控件随着窗口的变化而自己的位置也变化呢?就说原来在dialog右上角的按钮还在窗口的右上角,与dialog同等宽度的list控件还和dialog同等宽度?
      

  5.   

    这个要自己计算大小,然后用MoveWindow()等函数调整控件的大小和位置了。打排球去了!^_^
      

  6.   

    至于目录创建不了的问题,你创建文件夹之前应该先用PathIsDirectory()函数检查一下用户的SavePath.ini中记录的目录是否存在,如果已经有了这个文件夹的话,你还用CreateDirectory()来画蛇添足的话很容易出问题的。
      

  7.   

    或者用CreateDirectory()后马上用GetLastError()看如果返回为用ERROR_ALREADY_EXISTS则说明该文件夹已存在。
      

  8.   

    问题解决了,就是创建文件夹的时候出错了,我装了个98系统才查出来的,问题就是temp+="\\"这句,多余的,去掉就好了.全屏我就直接在.rc文件里边把窗设置那么大,反正把我的分辨率调成800*600以后看着和全屏一样,呵呵,控件也调整一下就好了
    谢谢你了,Snow_Ice,好像要结贴了?我看看怎么给分