2014-12-10 67 views
0

嘗試使用Visual Studio 2008構建軟件電話源(microsip),但窗口跳轉列表類未被識別。C++ Windows跳轉列表類未被識別

第19行給出因爲ICustomDestinationList錯誤是不被認可

c:\users\gremblin\downloads\microsip-3.9.2-src\microsip-3.9.2-src\jumplist.h(19) 
: error C2143: syntax error : missing ';' before '*' 


1. #ifndef jumplist_h__ 
2. #define jumplist_h__ 
3. 
4. #include <string> 
5. #include <shobjidl.h> 
6. #include <propkey.h> 
7. #include <propvarutil.h> 
8. 
9. class JumpList 
10. { 
11. public: 
12. JumpList(std::wstring AppID); 
13. ~JumpList(); 
14. bool DeleteJumpList(); 
15. void AddTasks(); 
16. 
17. private: 
18. HRESULT _CreateShellLink(PCWSTR pszArguments, PCWSTR pszTitle, IShellLinkW **ppsl, int iconindex = -1); 
19. ICustomDestinationList *pcdl; 
20. }; 

#endif // jumplist_h__ 

難道我失去了一些東西?據我所知jumplist功能都在"shobjidl.h"

回答

1

shobjidl.h定義ICustomDestinationList只有當NTDDI_VERSION >= NTDDI_WIN7,所以如果NTDDI_VERSION沒有設置爲Windows 7或更高版本的編譯器會抱怨。

NTDDI_VERSION默認情況下,在sdkddkver.h定義:

#define NTDDI_VERSION_FROM_WIN32_WINNT2(ver) ver##0000 
#define NTDDI_VERSION_FROM_WIN32_WINNT(ver)  NTDDI_VERSION_FROM_WIN32_WINNT2(ver) 

... 

#if !defined(_WIN32_WINNT) && !defined(_CHICAGO_) 
#define _WIN32_WINNT 0x0601 
#endif 

#ifndef NTDDI_VERSION 
#ifdef _WIN32_WINNT 
// set NTDDI_VERSION based on _WIN32_WINNT 
#define NTDDI_VERSION NTDDI_VERSION_FROM_WIN32_WINNT(_WIN32_WINNT) 
#else 
#define NTDDI_VERSION 0x06010000 
#endif 
#endif 

所以,無論是在你的項目中自行定義NTDDI_VERSION,或定義_WIN32_WINNT到一個合適的值,讓它傳播到NTDDI_VERSION

請參考MSDN如何_WIN32_WINNT涉及到NTDDI_VERSION

Using Windows Headers

+0

謝謝你讓我看到,並告訴你發生了什麼 – 2014-12-10 23:18:02