Frage

Für unsere Windows Mobile-Anwendung mag ich die Cleartype-Option auf dem Gerät aktivieren. Nach diese Artikel auf MSDN es sollte sein, die Einstellung der folgenden getan werden Registrierungsschlüssel:

HKEY_LOCAL_MACHINE\SYSTEM\GDI\Cleartype

Aber nichts passiert, nachdem diese bestimmte Taste zu setzen. Selbst ein Soft-Reset ist es nicht ermöglichen, sondern einfach entledigt sich der Registrierungsschlüssel ich gerade erstellt haben.

Merkwürdige ist, dass, wenn ich es manuell eingestellt mit Einstellungen-> System-> Screen-> Cleartype funktioniert es sofort. Und Vergleichen der Registrierungs Exporte vor und nach der Einstellung Show zu ändern, dass es nur der Schlüssel oben, dass Änderungen erwähnt.

Ich verstehe nicht ganz, warum es nicht funktionieren würde, wenn ich den Registrierungsschlüssel selbst ändern. Jeder, der weiß, was ich falsch mache hier?

[Update] Es sieht aus wie die Lösung zu tun ist, entweder:

  • Live Übertragung eine WM_SETTINGCHANGE Nachricht mit den richtigen Parametern wie:

    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 1)

    Aber das ist bisher nicht funktioniert. Ich denke, der wParam Parameter möglicherweise einen anderen Wert benötigen.

  • oder rufen Sie Create mit dem entsprechenden Ereignis für Cleartype Änderungen. Ein bisschen wie BacklightChangeEvent oder SDKBacklightChangeEvent funktionieren würde. Aber bisher habe ich noch keine Unterlagen über diese Ereignisse zu sehen, so kann ich nicht herausfinden, was das Ereignis wäre.

War es hilfreich?

Lösung

Ich habe die Lösung selbst gefunden. Es stellt sich heraus, dass die Änderung der Registrierung macht nicht erforderlich ist, sondern nur ein Aufruf an Systemparameter mit dem SPI_SETFONTSMOOTHING Parameter genug ist, um es die Änderungen anzuwenden.

Dies ist mein Code mit .NET CF 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);

Andere Tipps

Haben spülen Sie die Registrierung nach dem Wert zu ändern und vor dem Soft-Reset zu tun?
Sounds wie die Änderung bestehen nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top