Попытка создать источник софтфона (microsip) с помощью Visual Studio 2008, но классы списка переходов 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"
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
: