Nous utilisons un périphérique Windows CE 6.0 et la programmation avec .NET CF v2.0. Si je commence ma demande immédiatement la mise sous tension (avec un paramètre de registre approprié dans HKLM \ init), puis le code suivant fonctionne sur le contrôle des étiquettes, mais échoue sur les contrôles ListView:Impossible de modifier la police en "Arial" sous Windows CE
cntrl.Font = new Font("Arial", cntrl.Font.Size, cntrl.Font.Style);
Le symptôme de l'échec est que Font.Name est toujours "Tahoma" même après avoir appelé ce code pour le ListView. Aucune idée pourquoi.
Maintenant, je modifie le registre pour arrêter l'application en démarrant immédiatement à la mise sous tension. Redémarrez l'appareil, attendez quelques secondes et démarrez manuellement mon application ... maintenant le code fonctionne pour tous les types de contrôle!
Sinon, j'ajoute un raccourci vers \ Windows \ Startup (ou le dossier de démarrage spécifié dans HKLM \ System \ Explorer \ Shell Folders \ Startup). Cela charge l'application automatiquement après quelques secondes de retard, et cela fonctionne aussi.
Au moment de la conception, les contrôles ont une police de caractères "Tahoma" et sont remplacés par "Arial" si la langue sélectionnée par l'utilisateur est le vietnamien. J'ai joint deux images de l'application pour montrer le problème.
Ce que vous remarquerez est que les contrôles d'étiquetage ne sont pas affectés, à des contrôles ListView. Nous avons un stock plus ancien de périphériques Windows CE 5.0 exécutant exactement le même code ... et il fonctionne correctement sur ces appareils. Cela suggère un problème de minutage subtile sur Windows CE 6.0.
Enfin, cela ne concerne que "Arial" et vietnamien. Le mandarin (utilisant la police "Droid Sans Fallback") et le thaïlandais (utilisant la police "Loma") fonctionnent correctement sur tous les appareils.
Des idées? Y at-il quelque chose que je peux faire pour forcer le chargement des polices, ou peut-être attendre que les polices soient chargées?
Chose curieuse, si j'empêcher l'application de chargement via le registre et mettre à la place un raccourci d'application dans le dispositif dossier de démarrage, puis les polices vietnamiennes fonctionnent correctement dans le ListView! Il y a un délai sensiblement plus long entre la mise sous tension et le démarrage de ~ 2-3 en utilisant cette dernière méthode, mais le délai n'est pas trop important. Ceci suggère fortement qu'une partie du système d'exploitation CE 6.0 n'est pas correctement initialisée avant une seconde ou deux après la mise sous tension. – AlainD
Certaines API sont chargées au démarrage. Ceux-ci ne sont pas disponibles directement et donc le système d'exploitation signalera, quand ces API sont prêts à utiliser: WaitForApiReady: https://msdn.microsoft.com/en-us/library/ee482994%28v=winembedded.60%29.aspx. Vous n'avez pas écrit quel 'démarrage' vous utilisez. Si HKLM \ init, il y a plus de dépendances à attendre que si vous utilisez \ Windows \ StartUp. – josef
@josef: Le fournisseur de l'appareil a mis notre application dans HKLM \ init (je vais éditer la question avec cette info). – AlainD