Comment activer les contrôles communs dans une application Windows

Je suis en train d'activer les contrôles communs dans une application. J'ai suivi les étapes indiquées dans cet article MSDN, en particulier la section À l'aide de ComCtl32.dll la Version 6 dans une Application Qui Utilise Uniquement des Extensions du Standard. Mais je ne peux pas le faire fonctionner.

La seule chose que je suis en train de faire différemment de l'article est que j'ai ajouter de l'information manifeste dans Pages de propriétés du Projet | Propriétés de Configuration | Gestionnaire | Fichier Manifest | Manifeste Dépendances. C'est ce que je entrer dans la zone de texte:

"type=" Win32 "name=" Microsoft.De Windows.Commune-Contrôle' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'";%(AdditionalManifestDependencies)

Lorsque je vérifie le générés manifeste (MyApp.exe.intermédiaire.le manifeste), il semble correct.

J'ai aussi ajouter un lien de dépendance à ComCtl32.lib dans Propriétés du Projet | Propriétés de Configuration | Gestionnaire | Entrée | Dépendances Supplémentaires. J'ai aussi appeler InitCommonControlsEx au démarrage avec la structure INITCOMMONCONTROLSEX initialisé comme ceci:

INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_STANDARD_CLASSES;

Mais l'appel à la InitCommonControlsEx renvoie toujours FALSE (ce qui signifie qu'il a échoué). Après quelques recherches, j'ai découvert que le code d'erreur renvoyé par GetLastError est ERROR_FILE_NOT_FOUND. Quel pourrait être le problème?

Mise à JOUR: j'ai remarqué quelque chose qui pourrait être liée à la "fichier introuvable". Quand je lance l'application à partir du débogueur, l'une des lignes dans la fenêtre de Sortie est:

'MyApp.exe': Chargé 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6002.18305_none_88f3a38569c2c436\comctl32.dll', Ne peut pas trouver ou ouvrir le fichier PDB

Cependant, il ya un tas de lignes similaires pour certaines bibliothèques standard comme kernel32.lib, user32.lib, etc:

'MyApp.exe': Chargé 'C:\Windows\System32\ntdll.dll', Ne peut pas trouver ou ouvrir le fichier PDB

'MyApp.exe': Chargé 'C:\Windows\System32\kernel32.dll', Ne peut pas trouver ou ouvrir le fichier PDB

'MyApp.exe': Chargé 'C:\Windows\System32\msvcrt.dll', Ne peut pas trouver ou ouvrir le fichier PDB

'MyApp.exe': Chargé 'C:\Windows\System32\user32.dll', Ne peut pas trouver ou ouvrir le fichier PDB

Ces lignes apparaissent toujours pour n'importe quelle application, et il ne cause pas de problèmes. Pourrait-il être différent pour ComCtl32.dll?

Donc, je vais poser la question évidente. Ça fonctionne sans le manifeste info ajoutés manuellement ?
Il a essayé, n'a pas fonctionné.
Avez-vous pensez à téléphoner InitCommonControls() (pas l'Ex-verson) comme la première ligne de WinMain. Ne serait-ce pas le travail? Ou essayez-vous d'obtenir l'un des nouveaux styles visuels?

OriginalL'auteur user1610015 | 2012-12-20