DWORD dirlen=100;
GetCurrentDirectory(dirlen,sDir.GetBuffer(100));
sDir +=  "\\test.ini";
m_et1.SetWindowText(sDir.GetBuffer (100));结果显示“\test.ini”路径哪里了?晕啊

解决方案 »

  1.   

    DWORD dirlen=100;
    GetCurrentDirectory(dirlen,sDir.GetBuffer(100));
    sDir.ReleaseBuffer();//<========================增加这一句
    sDir +=  "\\test.ini";
    m_et1.SetWindowText(sDir.GetBuffer (100));
    sDir.ReleaseBuffer();//<========================增加这一句
    If you use the pointer returned by GetBuffer to change the string contents, you must call ReleaseBuffer before using any other CString member functions
      

  2.   

    你的程序等价于下列程序:
             CString sDir;
    LPTSTR lpBuffer=sDir.GetBuffer(100);
    GetCurrentDirectory(dirlen,lpBuffer);
    sDir+="\\test.ini";
    m_et1.SetWindowText(sDir);
    注意,你获得的路径赋给了lpBuffer,而不是sDir,此时sDir为NULL,故最后的sDir为\test.ini。此问题可修改如下:
    DWORD dirlen=100;
    char sDir[100];
    GetCurrentDirectory(dirlen,sDir);
    strcat(sDir,"\\test.ini");
    m_et1.SetWindowText(sDir);