Visual Studio 2008 — классы C ++ для Windows C ++

Попытка создать источник софтфона (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"

0

Решение

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:

Использование заголовков Windows

1

Другие решения


По вопросам рекламы [email protected]