一個EVC下用SHBrowseForFolder函數導致編譯出錯的問題


在EVC4.2+SP4的環境下,調用SHBrowseForFolder函數,用WinCE5.0自帶的標准SDK,結果發現如下編譯錯誤:
即使包含了文件Shlobj.h也一樣,提示錯誤大概如下:
D:\testFileTypeSearchDlg.cpp(203) : error C2065: 'BROWSEINFO' : undeclared identifier
D:\testFileTypeSearchDlg.cpp(203) : error C2146: syntax error : missing ';' before identifier 'sttBrowseInfo'
D:\testFileTypeSearchDlg.cpp(203) : error C2065: 'sttBrowseInfo' : undeclared identifier
D:\testFileTypeSearchDlg.cpp(205) : error C2065: 'LPITEMIDLIST' : undeclared identifier
D:\testFileTypeSearchDlg.cpp(215) : error C2065: 'BIF_RETURNONLYFSDIRS' : undeclared identifier
D:\testFileTypeSearchDlg.cpp(216) : error C2065: 'SHBrowseForFolder' : undeclared identifier
D:\testFileTypeSearchDlg.cpp(222) : error C2065: 'SHGetMalloc' : undeclared identifier

另外我測試發現,好像用MFC才這樣的,不用MFC的時候調用SHBrowseForFolder函數也是可以的.

5 个解决方案

#1


在網上搜了下,有人說解決這個問題,可惜我打不開他給的網頁:

網上別人的帖子位置如下:
http://social.msdn.microsoft.com/Forums/zh-TW/803/thread/4aaacb8a-fa9a-4ee9-9f86-b460db6a0622

#2


沒人回答,自己頂

#3


開發環境]eVC 4.2 SP4 (Project->Settings->Link->Object/Library modules: Ceshell.lib)

[OS] WINCE 5.0

[SDK]STANDARDSDK_500

請問我想要使用SHBrowseForFolder這個API在WinCE5.0上

當我宣告一個SHBrowseForFolder所需要的參數如下:

BROWSEINFO bi;

編譯錯誤訊息永遠為[error C2065: 'BROWSEINFO' : undeclared identifier]

然後我尋找h檔案後,發現在shlobj.h裡面有BROWSEINFO,所以我又加了#include <shlobj.h>

但是編譯錯誤訊息還是[error C2065: 'BROWSEINFO' : undeclared identifier]

請問這要如何解決呢?

我在Windows CE 5.0 Help裡面有找到SHBrowseForFolder及BRIWSEINFO的說明,應屬於微軟標準API及Struct吧?

請問有人遇到過這種問題可以提供相關解決的參考資料嗎?

非常感謝....



剛剛查了Google論壇

解法在

http://groups.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_thread/thread/1bed981d82e103a1/9e4436e7621d0821?lnk=st&q=%22SHBrowseForFolder%22+%22C2065%22+&rnum=2#9e4436e7621d0821

真是不懂為什麼要這樣做,不過終於可以動了...

#4


這個問題多半是編譯開關造成的,就是include了頭文件,但是依然顯示編譯錯誤,樓主可以不用include頭文件,直接加入這一段:

typedef struct _browseinfo {
    HWND        hwndOwner;
    LPCITEMIDLIST pidlRoot;
    LPTSTR        pszDisplayName;// Return display name of item selected.
    LPCTSTR       lpszTitle;      // text to go in the banner over the tree.
    UINT         ulFlags;       // Flags that control the return stuff
    BFFCALLBACK  lpfn;
    LPARAM      lParam;         // extra info that's passed back in callbacks
    int          iImage;      // output var: where to return the Image index.
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;

或者找一下Shlobj.h中,哪個編譯開關未定義,導致找不到BROWSEINFO等結構體的定義。

#5


引用 3 樓 daviemeng 的回復:
剛剛查了Google論壇

解法在

http://groups.google.com/group/comp.os.ms-windows.programmer.tools.mfc/browse_thread/thread/1bed981d82e103a1/9e4436e7621d0821?lnk=st&q=%22SHBrowseForFolder%22+%22C2065%22+&rnum=2#9e4436e7621d0821

真是不懂為什麼要這樣做,不過終於可以動了...

  我也看到了這個帖子,但是上面的那個網址打不開啊!!!!!!!!!!

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com