windowswindows-vistataskdialog

calling TaskDialogIndirect loader says ordinal 345 not found


I built the simple MS example for TaskDialogIndirect (see https://msdn.microsoft.com/en-us/library/windows/desktop/bb760544(v=vs.85).aspx)

When I run it I get "The ordinal 345 could not be located in the dynamic link library COMCTL32.dll"

The above page says it needs ComCtl32.DLL version 6 but C:\Windows\System32\ComCtl32.DLL is 5.82.7601.18201 and I can't find a version 6 anywhere on the disk.

I am running Windows 7 with VS2012. TaskDialog was added in Vista so why don't I have the correct version of ComCtl32.DLL???


Solution

  • Here's a common and useful block of code that should help to load the correct common controls, comctl32.dll:

    #if defined _M_IX86
    #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #elif defined _M_IA64
    #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #elif defined _M_X64
    #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #else
    #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
    #endif