对于我们的窗户的移动应用程序,我想启用明确的类型选择的设备。根据 第MSDN它应该做的,是制定下注册的关键:

HKEY_LOCAL_MACHINE\SYSTEM\GDI\Cleartype

但什么也没发生之后,设置这种特殊的关键。甚至是软重置不能使它,而只是摆脱登记册的关键,我只是创建。

奇怪的是,当我把它设置使用手动设置的系统->屏幕-->明确的类型它的工作。和比较注册出口之前和之后改变设置显示,这只是钥匙上面提到的变化。

我不太明白为什么它不工作的时候,我改变登记册的关键自己。任何人谁知道什么我做错了什么在这里?

[新] 它看起来像的解决方案是要做到:

  • 广播一WM_SETTINGCHANGE消息正确的参数,如:

    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 1)

    但是,没有工作为止。我猜包含的参数可能需要一个不同的价值。

  • 或者叫CreateEvent有关的事件为明确的类型变化。有点像BacklightChangeEvent或SDKBacklightChangeEvent会的工作。但到目前为止我还没有看到任何文件,这些事件,所以我不能作出什么样的事件会。

有帮助吗?

解决方案

我已经找到了解决自己。事实证明,使注册的变化是不必要的,但仅仅是一个呼叫 SystemParametersInfo 与SPI_SETFONTSMOOTHING参数就足以使它适用于更改。

这是我的代码使用。净CF2.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);

其他提示

你有没有冲注册改变之后的价值,并在这样做之前的软重置?
听起来像改变没有持续存在。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top