// cl use_comctl32.c comctl32.lib use_comctl32_6.lib delayimp.lib /link /DELAYLOAD:use_comctl32_6.dll
// 1. should load two versions of comctl32.dll
// 2. manifest embeded in use_comctl32_6.dll should be processed
// 3. load another comctl32.dll from WinSxS
#include <windows.h>
#include <commctrl.h>
#include <stdio.h>
// use_comctl32_6.dll requires comctl32.dll 6.x in winsxs
__declspec(dllimport) void UseTaskDialogIndirect();
__declspec(dllimport) void UseInitCommonControls();
int main() {
INITCOMMONCONTROLSEX InitCtrls;
printf("Please use ProcessHacker or SystemInformer to check loaded modules.\n");
InitCtrls.dwSize = sizeof(InitCtrls);
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
printf("loaded System32\\comctl32.dll or WinSxS\\5.82\\comctl32.dll \n");
getchar();
UseInitCommonControls();
printf("loaded WinSxS\\6.0\\comctl32.dll\n");
getchar();
return 0;
}