2009-10-14 3 views
2

Windows Mobile 응용 프로그램의 경우 장치에서 ClearType 옵션을 사용하려고합니다.Windows Mobile에서 프로그램 방식으로 ClearType 사용

HKEY_LOCAL_MACHINE\SYSTEM\GDI\Cleartype 

을하지만 아무것도이 특정 키를 설정 한 후에 발생하지 : MSDN에 this 기사에 따르면 다음과 같은 레지스트리 키를 설정 할 수행해야합니다. 소프트 리셋으로도 활성화되지는 않지만 방금 만든 레지스트리 키를 제거합니다.

이상하게도 설정 -> 시스템 -> 화면 -> ClearType을 사용하여 수동으로 설정하면 즉시 작동합니다. 그리고 설정을 변경하기 전후의 레지스트리 내보내기를 비교하면 위에서 언급 한 변경 사항 키임을 알 수 있습니다.

레지스트리 키를 직접 변경하면 작동하지 않는 이유를 알 수 없습니다. 내가 여기서 뭘 잘못하고 있는지 아는 사람?

[업데이트] 솔루션 중 하나를해야 할 것 같습니다 :

  • 방송에게 WM_SETTINGCHANGE 메시지를 같은 올바른 매개 변수 :

    SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 1)

    하지만 그건 너무 일을하지 않았습니다 멀리. wParam 매개 변수에 다른 값이 필요할 수 있습니다.

  • 또는 CreateType을 ClearType 변경 관련 이벤트와 함께 호출하십시오. BacklightChangeEvent 또는 SDKBacklightChangeEvent와 같은 비트가 작동합니다. 그러나 지금까지 나는이 사건들에 관한 어떤 문서도 보지 못했기 때문에 나는 사건이 무엇인지를 알아낼 수 없다.

+0

링크는 Windows CE를 말합니다

이 .NET CF 2.0를 사용하여 내 코드입니다. 특히 이미지에 ClearType을 통합하여 이미지를 작성하는 사람에게 지정됩니다. – Shaihi

+0

사실,하지만 필요한 레지스트리 키로 안내해주었습니다. 변경 사항을 직접 모니터링하는 동안 레지스트리에서 변경 사항을 확인했습니다. –

+0

네,하지만 분명히 제어판에 변경 사항을 알리기 위해 GWES에 대한 또 다른 호출이 필요합니다 (말한대로). 특정 키에 대한 키 변경 사항을 모니터링하는 것은 없으므로 나는이 코멘트와 함께 어떤 새로운 정보도 추가하지 않고 있다고 생각한다. – Shaihi

답변

6

직접 솔루션을 발견했습니다. 레지스트리 변경은 필요하지 않지만 SPI_SETFONTSMOOTHING 매개 변수가있는 SystemParametersInfo을 호출하면 변경 사항을 적용하기에 충분합니다. 당신이 제공

[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); 
0

값을 변경하고 소프트 리셋을 수행하기 전에 레지스트리를 플러시 했습니까?
변경 사항과 같은 소리는 지속되지 않습니다.

+0

예, 레지스트리는 변경 후에 비워졌다. –

관련 문제