Я пытаюсь установить простую гиперссылку в моем окне.InitCommonControlsEx() не работает с ICC_LINK_CLASS в Windows 8.1
INITCOMMONCONTROLSEX iccx;
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccx.dwICC = ICC_LINK_CLASS; // CommCtrl.h: #define ICC_LINK_CLASS 0x00008000
bool bResult = InitCommonControlsEx(&iccx); // bResult is false.
DWORD dwError = GetLastError(); // dwError is 0.
hWnd = CreateWindowExW(/*_In_ DWORD*/ 0,
/*_In_opt_ LPCTSTR*/ WC_LINK, // CommCtrl.h: #define WC_LINK L"SysLink"
/*_In_opt_ LPCTSTR*/ L"Hello World",
/*_In_ DWORD*/ WS_VISIBLE | WS_CHILD | WS_TABSTOP,
/*_In_ int*/ 50,
/*_In_ int*/ 200,
/*_In_ int*/ 100,
/*_In_ int*/ 20,
/*_In_opt_ HWND*/ hWndParent,
/*_In_opt_ HMENU*/ NULL,
/*_In_opt_ HINSTANCE*/ hInstance,
/*_In_opt_ LPVOID*/ NULL);
DWORD dwError = GetLastError(); // hWnd is NULL and dwError is 1407.
Код ошибки 1407 поясняется в here следующим образом.
ERROR_CANNOT_FIND_WND_CLASS
1407 (0x57F)
Cannot find window class.
Я использую Windows 8.1 Pro x64, и я никогда не пробовал этот код на любой другой версии Windows.
В чем проблема?
Вы забыли манифест Common Controls 6? Для управления SysLink требуются общие элементы управления 6. – andlabs
@andlabs Впервые услышал это. Теперь я буду google. Благодарю. – hkBattousai
После небольшого интернет-исследования я смог решить свою проблему, добавив код '#pragma comment (linker,"/manifestdependency: \ "type = 'win32' name = 'Microsoft.Windows.Common-Controls' version = ' 6.0.0.0 'processorArchitecture =' * 'publicKeyToken =' 6595b64144ccf1df 'language =' * '\ "") 'сразу после включения CommCtrl.h' #include'. Тем не менее, я не знаю объяснения того, что я сделал. –
hkBattousai