2009-02-05 6 views
1

J'ai développé une application de ruban sur Vista en utilisant VS 2008. Cela fonctionne très bien sur Vista. Je lie statiquement MFC pour que je puisse aussi l'utiliser sous XP. Mais quand je l'exécute sur XP, il affiche une boîte de dialogue disant "Une ressource requise était indisponible". Plus tard, si j'appuie sur OK dans cette boîte de dialogue, j'en mets une autre en disant "J'ai rencontré un argument incorrect". Beaucoup de ces dialogues ("Encountered an ....") suivent (l'un après l'autre) jusqu'à ce que je le termine du gestionnaire de tâches."J'ai rencontré un argument incorrect" exécutant une application de ruban MFC Windows XP

Chose intéressante, j'ai remarqué que ce scénario se produit lorsque je place simplement le pointeur de la souris sur la barre de ruban. Je ne fais rien d'autre. Ensuite, j'ouvre le gestionnaire de tâches et vois que la mémoire utilisée augmente de 8 octets à chaque seconde. Finalement suivi du scénario ci-dessus.

?????

+0

@Ron, je pense que la déclaration "J'ai essayé d'installer le pack de fonctionnalités MFC sur le système XP, mais il a échoué trois fois." est assez important pour justifier de placer dans votre question, pas comme un commentaire à une réponse. Je pense que cela répond à votre question car, sans le pack de fonctionnalités installé, comment votre logiciel fonctionnera-t-il? – paxdiablo

+0

Et je suppose que vous parlez en fait du pack de fonctionnalités VC2008. Si vous essayez d'installer cela ou le paquet redistribuable. Le pack de fonctionnalités est un ajout à VC, les redistribuables sont censés être expédiés aux utilisateurs de votre application. – paxdiablo

+0

Maintenant, je vois que le lecteur d'installation était plein. Je vais installer sur un lecteur différent et obtenir la trace de la pile. – Ron

Répondre

0

Il y avait une fuite de ressources dans mon code qui causait ce problème.

J'avais appelé GetDC() lors de la mise à jour des contrôles de la barre de ruban (ON_UPDATE_COMMAND_UI), mais je ne l'avais pas publié. Le libérer en utilisant ReleaseDC (..) a résolu le problème.

Merci pour toutes les réponses.

0

Il se peut bien que le ruban fasse partie des commandes communes de Win32 dans Vista (donc pas disponible sous XP). En d'autres termes, même si vous avez des MFC liés de manière statique, il se peut que ce ne soit pas MFC qui contienne la ressource que vous recherchez.

Faire du wiki communautaire, puisque je ne sais vraiment pas si c'est juste :-).

+0

J'installe "Feature Pack MFC" pour obtenir les fonctionnalités de l'interface utilisateur du ruban. Je pense que cela signifie Ribbon vient en DLL MFC. ..? – Ron

+0

Assez juste mais si, comme vous le dites dans le commentaire à @Ash, il n'a pas installé (trois fois!), Comment voulez-vous que votre code s'exécute sans elle? Vous devez d'abord poser la question: pourquoi MFC FP ne sera pas installé sur XP? – paxdiablo