超级奇怪的问题,CFileDialog的打开路径不受程序动态控制
我想用CFileDialog打开我的应用程序所在的当前路径,关键代码如下。但是就是不起作用,每次打开时都是前一次打开的文件路径。
奇怪的是,如果我直接把打开路径设置为C盘,CFileDialog就很听话地打开C盘。而我如果是程序动态获取的位置,CFileDialog就是不听使唤。
太奇怪了,谁能解决这个问题,分数全部相送,谢谢各位啦~~~~~~~~~
----------------------------------------------------------------------
CString historyData;
CFileDialog myFileDialog(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"txt files (*.txt)|*.txt|All files (*.*)|*.*",NULL);
myFileDialog.m_ofn.lpstrInitialDir = GetExePath();//???为什么不起作用呢?用"C:\\"却起作用
//myFileDialog.m_ofn.lpstrInitialDir = "C:\\";
if(myFileDialog.DoModal()==IDOK)
historyData=myFileDialog.GetPathName();
else
return;
----------------------------------------------------------------------
GetPathName的函数定义如下,我调试过没有问题,用MessageBox把返回值弹出来正好是应用程序所在的目录,如放在C盘的话,返回值是"C:\"
//获得当前程序所在的路径
char* CMySnifferDlg::GetExePath()
{
char buff[255];
GetModuleFileName(NULL,buff,254);//程序完整路径加程序名
int len=strlen(buff);
while(len>0 && buff[len-1] !='\\')len--;//去掉程序名,得到路径
buff[len]=0;
char *str=buff;
return str;
}