//fpath1为CString全局变量 de.exe为Dos下C语言编写的可执行程序
CFileDialog yuan(true,NULL,NULL,OFN_HIDEREADONLY,NULL,NULL);
yuan.DoModal();
fpath1=yuan.GetPathName();
    spawnl(P_WAIT,"de.exe","de.exe",fpath1,NULL);
只要在文件对话框中选中文件并确定,子进程调用就不执行,而给fpath1赋值并不去打开文件对话框(不用DoModal())则正确,搞不懂,还请各位大侠指教

解决方案 »

  1.   

    CFileDialog.GetPathName()返回值为CString,类是面向对象的概念,Dos下C语言编写的可执行程序应该不认识吧。给fpath1赋值是把fpath1当一个字符串(char *)来用
      

  2.   

    很有可能是你赋的fpath1值有问题!你把GetPathName得到的值和你的比较一下吧!
      

  3.   

    出现这种问题是应为使用CFileDialog并且确认时改变了系统的默认路径,就如同
    Dos中使用了
    Path directory
    命令一般,所以说你的第二和第三个参数要用绝对路径
    fpath1 + "\\de.exe"