2010-11-30 49 views
0

J'ai un projet MFC C++ Visual Studio 2005 qui utilise un contrôle Combo-box. Propriété Type = Dropdown. Le projet était à l'origine en UNICODE et le contrôle de la zone de liste déroulante a fonctionné comme prévu. J'ai ensuite dû changer le jeu de caractères de UNICODE en jeu de caractères multi-octets pour être compatible avec les classes/bibliothèques disponibles dans un package d'ingénierie spécial, Measurement Studio de National Instruments. En faisant cela, j'ai remarqué que la zone de liste déroulante ne fonctionnerait plus correctement (c'est-à-dire aucun menu déroulant). Pour confirmer cette découverte, j'ai créé un projet principalement vide avec un seul dialogue et avec seulement le contrôle de la zone de liste déroulante dessus. Pas de code en arrière-plan.
Si je "Test Dialog" dans l'éditeur il fonctionne comme prévu. Si je lance le programme (avec ou sans débogage), j'obtiens le comportement décrit ci-dessus. Si je change le jeu de caractères en UNICODE il fonctionne parfaitement bien.
En note, j'ai également remarqué que les apparences de certains boutons de mon projet original ont changé après le passage en Multi-Byte mais je n'ai pas testé leur fonctionnalité.Le contrôle de zone de liste déroulante Visual Studio C++ ne fonctionne pas avec le jeu de caractères multi-octets

Y a-t-il une raison connue pour laquelle la fonctionnalité d'une commande de zone de liste déroulante serait affectée par le jeu de caractères choisi? Merci.

Répondre

1

Je présume que vous utilisez l'éditeur de ressources pour remplir la liste déroulante plutôt que le code? Les données pré-remplies sont stockées dans le fichier de ressources sous forme binaire et ne seront pas converties lorsque vous changez le type de projet d'Unicode en Multi-octets. Essayez de supprimer toutes les chaînes de la ressource et de les saisir de nouveau.

+0

Mark, merci pour la réponse. J'ai été capable de résoudre le problème selon ma réponse. – Mike

0

J'ai été en mesure de résoudre le problème en redimensionnant explicitement la zone de liste déroulante dans l'éditeur de ressources. Je ne me suis pas rendu compte que cela devait être fait parce que dans ma version UNICODE, la zone de liste déroulante serait automatiquement agrandie par rapport à ce qui était explicitement défini dans l'éditeur de ressources afin de prendre en compte toutes les entrées. Il ne serait pas automatiquement agrandir dans la version Multibyte.

+0

C'est vraiment étrange. Je n'ai jamais remarqué une différence de comportement entre les deux modes, et la taille par défaut devrait montrer au moins quelques lignes. –