编程方式启用明确的类型在Windows移动
-
21-09-2019 - |
题
对于我们的窗户的移动应用程序,我想启用明确的类型选择的设备。根据 此 第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);
其他提示
你有没有冲注册改变之后的价值,并在这样做之前的软重置?
听起来像改变没有持续存在。
不隶属于 StackOverflow