evc下打开文件夹对话框

ZXZ2002   2008-8-21 16:38 楼主
evc有没有打开文件夹对话框的api啊,SHBrowseForFolder()这个函数在evc里编译不过啊,还有没有其他的方法啊。
wince不会只能打开文件吧。
各位大虾帮帮忙啊!

回复评论 (11)

帮顶一下,关注!
点赞  2008-8-22 08:15

SHBrowseForFolder 是 Windows 的 Shell 函数;


WinCE 中有没有不知道,可以查查看。



另外,WinCE 的版本不一样,也有所区别,建议查一下联机帮助。
点赞  2008-8-22 09:11


  1.   Platform Builder for Microsoft Windows CE 5.0   

  2. SHBrowseForFolder
  3. Requirements
  4. OS Versions: Windows CE .NET 4.0 and later.
  5. Header: Shlobj.h.
  6. Link Library: Ceshell.lib.
  7. This function displays a dialog box that allows a user to select a folder.

  8. LPITEMIDLIST WINAPI SHBrowseForFolder(
  9.   LPBROWSEINFO lpbi
  10. );
  11. Parameters
  12. lpbi
  13. [in] Pointer to a BROWSEINFO structure that contains information used to display the dialog box.
  14. Return Values
  15. The return value is a pointer to an ITEMIDLIST structure (PIDL) that specifies the location of the folder that the user selected relative to the root of the namespace. NULL indicates that the user chose the Cancel button in the dialog box.

  16. Remarks
  17. You should call the InitCommonControls function before calling SHBrowseForFolder.

  18. The calling application is responsible for freeing the returned PIDL with the IMalloc::Free method for the shell allocator. To get a handle to the IMalloc:IUnknown interface for the shell's allocator, call SHGetMalloc.

  19. If you implement a callback function, you receive a handle to the dialog box. You can use this window handle to modify the layout or the contents of the dialog box.

  20. Requirements
  21. OS Versions: Windows CE .NET 4.0 and later.
  22. Header: Shlobj.h.
  23. Link Library: Ceshell.lib.
点赞  2008-8-22 10:12

5.0下肯定是支持了,建议你好好看看上面这个帮助,
注意包含头文件和lib文件。
以及在执行该函数之前的注意事项。如:“You should call the InitCommonControls function before calling SHBrowseForFolder.
点赞  2008-8-22 10:14
还是没搞定,哪位高人给个例子啊。
点赞  2008-8-25 09:32
        HANDLE                                hFind;                                               
        WIN32_FIND_DATA                FindFileData;

        CFileDialog           cfd(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,_T("文本文件(*.csv)|*.csv|"));   
        cfd.m_ofn.lpstrInitialDir = _T("\\Temp");
    cfd.m_ofn.lpstrTitle      = _T("导入(只能在本文件夹下选择)");
    if( cfd.DoModal() == IDCANCEL )
                return;  
点赞  2008-8-25 16:45
同意楼上的
点赞  2008-8-25 17:33
mark
点赞  2008-8-26 08:17
CString dbFileName;

   TCHAR szFilters[]=_T("Access File (*.cdb)|*.cdb||");
这里你可以修改一下文件过滤
   
   //打开文件保存对话框
   CFileDialog fileDlg (FALSE, _T("cdb"),NULL,OFN_PATHMUSTEXIST,szFilters,this);
   if (fileDlg.DoModal() == IDOK)
   {
           dbFileName = fileDlg.GetPathName();
           AfxMessageBox(dbFileName);
   }
   else
   {
           return;
   }

   //
   if (!CreateDatabase(dbFileName))
   {
           AfxMessageBox(_T("Create DB Fail"));//创建数据库失败
           return;
   }       
点赞  2008-8-26 09:59
谢谢大家。你们的方法试了吗?我怎么用了不行呢。
问题已搞定,谢谢各位帮忙。
点赞  2008-8-26 21:09
请问楼上怎么做的,我也正好要做这么个东东,谢谢!
点赞  2008-10-13 11:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复