SHELLExecute只是打开而已,select选择得依据得到的item,你是用什么做的显示文件?listcontrol?

解决方案 »

  1.   

    SHELLExecute只是打开而已,select选择得依据得到的item,你是用什么做的显示文件?listcontrol?我用的CListCtrl,图标样式的要怎么获取双击的item名字
      

  2.   

    ShellExecute (0, "OPEN", sFile, "", "", 1)
    //sFile为文件的全路径文件名
      

  3.   

    我写成这样,但运行的时候提示找不到文件,文件名是一串乱码字,应该怎么写文件名呢
    CString str,strName;
    GetDlgItemText(IDC_EDIT1,str);//获得当前目录路径
    str += "*.*";
    LPNMLISTVIEW pNMLstCtl = (LPNMLISTVIEW)pNMHDR;
    if(pNMLstCtl->iItem >= 0) 
    {
    CFileFind file;
    BOOL bContinue = file.FindFile(str);
    while(bContinue)
    {
    bContinue = file.FindNextFile();
    if(!file.IsDirectory() && !file.IsDots())
    {
    int i=0;
    i++;
    if(pNMLstCtl->iItem==i)
    {
    SHFILEINFO info;
    int index = str.Find("*.*");
    str.Delete(index,3);
    SHGetFileInfo(str + file.GetFileName(),0,&info,sizeof(&info),SHGFI_DISPLAYNAME | SHGFI_ICON);
    strName=info.szDisplayName;
    }
    }
    }
    SHELLEXECUTEINFO ShExecInfo;
    ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
    ShExecInfo.fMask = NULL;
    ShExecInfo.hwnd = NULL;
    ShExecInfo.lpVerb =  "open";
    GetDlgItemText(IDC_EDIT1,str);
    ShExecInfo.lpFile = str+strName;//欲打开路径
    ShExecInfo.lpParameters = NULL;
    ShExecInfo.lpDirectory = NULL;
    ShExecInfo.nShow =SW_SHOWNORMAL;
    ShExecInfo.hInstApp = NULL;
    ShellExecuteEx(&ShExecInfo);
    }
      

  4.   

    可以利用 CListCtrl::SetItemData 属性,
    定义一个结构体,存放路径,文件属性 大小等信息
    双击的时候获取这个属性中的文件名即可