http://hi.baidu.com/xiao%BF%D5%BF%D5/blog/item/3c418716a6cadf12962b4344.html
CFileDialog打开当前路径
TCHAR Buffer[size];
GetCurrentDirectory(size, Buffer);
CFileDialog dlg(true,"*BIN",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "二进制文件(*.BIN)|*.bin|All Files (*.*)|*.*|",NULL);
dlg.m_ofn.lpstrInitialDir=Buffer;
if(dlg.DoModal())
{
//your code;
}
========================
http://hi.baidu.com/g168999/blog/item/9ef3ab517977f1571038c2ba.html
1.方法1
char pBuf[MAX_PATH]; //存放路径的变量
GetCurrentDirectory(MAX_PATH,pBuf); //获取程序的当前目录
strcat(pBuf,"//");
strcat(pBuf,AfxGetApp()->m_pszExeName);
strcat(pBuf,".exe"); //获取程序的全文件名
2.方法2
//函数返回应用程序所在的路径
CString CClientApp::ReturnPath()
{
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind('//');
sPath=sPath.Left(nPos);
return sPath;
}
3.对比及建议
方法1获取的是程序的工作路径,如某个程序安装在C,D盘或者其它任何,当你从[开始]-[程序]后的菜单中打开该文件,此时获取的是用户工作路径,如:C:/Documents and Settings/[计算机当前用户名]/....../....
如果你想通过这个路径来加载你放在程序目录下的文件,必定出错。通常这种情况在你编译调试程序时是不会出错的,你跟踪得到的绝对路径,但打包安装后一定出问题。
方法2获取的是程序的绝对路径,用这个路径加载同目录下的文件是不会有问题的。
如果你要确保成功加载文件,建议使用方法2!!!!!!