Question

Je pense que je manque quelque chose de fondamental. Veuillez me dire ce que c'est, si vous le pouvez.

J'ai développé une petite application C ++ WinForms en utilisant VS2008. Il est donc construit en utilisant .NET 3.5 SP1. Ma boîte de développement est Win7, si cela compte.

La valeur par défaut de la propriété USECompatibleTextrendring dans WinForms Controls est fausse dans cette version de VStudio. Et cela ne devrait pas avoir d'importance pour moi, je ne pense pas. Je n'ai pas de texte ou de commandes sur mesure.

L'application a l'air bien en cours d'exécution sur ma boîte Win7.

Si je le regroupe (faisant glisser le long .NET 3.5) et l'installez sur l'un de nos ordinateurs de bureau WinXP, les boutons et les étiquettes ne sont pas bons; Le texte est coupé en eux.

Si je définis UseCompatibleTextrendring sur true, puis je l'exécute sur les boîtes XP, le texte s'intègre dans les boutons et les étiquettes.

Ma question est: pourquoi? L'installation place .NET 3.5 sur les boîtes XP, donc l'application devrait pouvoir trouver et utiliser la bonne version de WinForms, non?

Je dois noter qu'avant de mettre mon app + .net 3.5 sur ces cases, ils n'ont pas du tout .net. Ils n'obtiennent pas de mises à jour automatiques Microsoft; Notre gars informatique recueille les patchs et les mises à niveau.

Ce genre de chose s'est passé auparavant avec les applications que je crée. Ils ont l'air / fonctionnent très bien sur les machines d'ingénierie, car nous les maintenons et ils ont principalement des trucs à jour. Lorsqu'ils sont exécutés sur les boîtes d'entreprise, ils ne s'exécutent généralement pas et ont besoin que le vrède installé. ]

Retour à la question à accomplir: le texte a l'air mieux avec le jeu UseCompatibleTextrendring sur False, donc je préfère le garder ainsi, si je le peux. J'aimerais comprendre ce qui pourrait manquer sur les boîtes XP qui font que le texte ne convient pas.

Merci

S

Était-ce utile?

La solution

C'est probablement un problème de mise à l'échelle, la machine XP peut avoir un paramètre DPI adaptateur vidéo différent ou une taille de police système différente. La mise à l'échelle est affectée par l'autoscalemode du formulaire et s'ils "héritent" de la propriété de police du contrôle du conteneur. Ce qu'il fait si la propriété de police n'est pas audacieuse dans la fenêtre Propriétés.

Un moyen rapide de vérifier si la mise à l'échelle fonctionne la propriété dans votre formulaire:

protected:
    virtual void OnLoad(EventArgs^ e) override {
        this->Font = gcnew System::Drawing::Font(this->Font->FontFamily, 
            this->Font->SizeInPoints * 125 / 96);
    }

Qui l'échelle. Il est probablement réduit sur la machine XP, utilisez 96/125.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top