Question

Pour notre application Windows Mobile Je souhaite activer l'option ClearType sur l'appareil. Selon cet article sur MSDN il devrait être fait établirons les éléments suivants clé de registre:

HKEY_LOCAL_MACHINE\SYSTEM\GDI\Cleartype

Mais rien ne se passe après avoir défini cette touche particulière. Même une réinitialisation logicielle ne permet pas, mais simplement se débarrasser de la clé de Registre que je viens de créer.

La chose étrange est que lorsque je l'ai mis manuellement à l'aide Paramètres-> Système-> Screen-> ClearType cela fonctionne immédiatement. Et en comparant les exportations de registre avant et après avoir changé le spectacle de réglage qu'il est juste la clé mentionnée ci-dessus qui change.

Je ne comprends pas pourquoi cela ne fonctionnerait pas quand je change le registre moi-même clé. Toute personne qui sait ce que je fais mal ici?

[mise à jour] Il semble que la solution est de faire soit:

  • Diffuser un message WM_SETTINGCHANGE avec les paramètres appropriés comme:

    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 1)

    Mais cela n'a pas fonctionné jusqu'à présent. Je suppose que le paramètre wParam pourrait avoir besoin d'une autre valeur.

  • ou appelez CreateEvent à l'événement pertinent pour les changements ClearType. Un peu comme BacklightChangeEvent ou SDKBacklightChangeEvent fonctionnerait. Mais jusqu'à présent, je ne l'ai pas vu de la documentation sur ces événements, donc je ne peux pas travailler ce que l'événement serait.

Était-ce utile?

La solution

J'ai trouvé moi-même solution. Il se avère que faire le changement de registre n'est pas nécessaire, mais juste un appel à SystemParametersInfo avec le paramètre SPI_SETFONTSMOOTHING suffit de faire appliquer les modifications.

Ceci est mon code en utilisant CF .NET 2.0:

[DllImport("coredll.dll", SetLastError = true)]
static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref int pvParam, uint fWinIni);

const uint SPI_SETFONTSMOOTHING = 0x004b;
const uint SPI_UPDATEINI = 0x1;

int pv = 0;
bool ret = SystemParametersInfo(SPI_SETFONTSMOOTHING, 1, ref pv, SPIF_UPDATEINIFILE);

Autres conseils

Avez-vous videz le registre après avoir changé la valeur et avant de faire le Soft Reset?
sons comme le changement ne persiste pas.

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