Tom*_*ort 2 registry compact-framework windows-mobile cleartype
对于我们的Windows Mobile应用程序,我想在设备上启用ClearType选项.根据MSDN 上的这篇文章,应该设置以下注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\GDI\Cleartype
Run Code Online (Sandbox Code Playgroud)
但是在设置此特定键后没有任何反应.即使软重置也不能启用它,但只是摆脱我刚刚创建的注册表项.
奇怪的是,当我使用Settings-> System-> Screen-> ClearType手动设置它时,它立即起作用.并且在更改设置之前和之后比较注册表导出表明它只是上面提到的关键变化.
我不太明白为什么当我自己更改注册表项时它不起作用.谁知道我在这里做错了什么?
[更新]看起来解决方案是执行以下任一操作:
使用正确的参数广播WM_SETTINGCHANGE消息,例如:
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 1)
但到目前为止还没有奏效.我猜wParam参数可能需要不同的值.
或者使用ClearType更改的相关事件调用CreateEvent.有点像BacklightChangeEvent或SDKBacklightChangeEvent会起作用.但到目前为止,我还没有看到关于这些事件的任何文档,所以我无法弄清楚事件是什么.
我自己找到了解决方案.事实证明,不需要进行注册表更改,但只需使用SPI_SETFONTSMOOTHING参数调用SystemParametersInfo就足以使其应用更改.
这是我使用.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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1617 次 |
| 最近记录: |