HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: ClearType включение/выключение

[Ответить]
Тихоня [01.11.2005 15:04] ClearType включение/выключение:
Хочу написать утилиту, которая будет включать/выключать ClearType (WM2003SE). Чтобы не лазить каждый раз в Настройки/Экран. Утилиту можно будет повесить на аппаратную кнопку и все дела.

eVC++ листинг ниже. Прога действительно включает/выключает настройку в реестре (т.е. заходим в Настройки/Экран - галочка отмечается как надо). Но GUI не обновляется с новой настройкой. Никакой реакции.
Вручную через Настройки - экран перерисовывается - сразу же как только галочку щелкнешь. На мою прогу -никакой реакции нет. Что нужно сделать?

HKEY hKeyN2;
int rc;
DWORD dwDisp;

rc = RegOpenKeyEx (HKEY_LOCAL_MACHINE, TEXT ("System\\GDI\\CLEARTYPE"), 0, KEY_QUERY_VALUE, &hKeyN2);
RegCloseKey( hKeyN2 );

if (rc == 0)
{

RegDeleteKey(HKEY_LOCAL_MACHINE, TEXT ("System\\GDI\\CLEARTYPE"));
}
else
{
RegCreateKeyEx (HKEY_LOCAL_MACHINE, TEXT("System\\GDI\\CLEARTYPE"), 0,TEXT (""), 0, 0, NULL, &hKeyN2, &dwDisp);
}
Тихоня [02.11.2005 08:52] :
Угу.. тока какое именно событие в моем случае Я уже и так и этак изголялся.. гм..


Тихоня [08.11.2005 15:33] :
Вот так!

int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{

int SPI_SETFONTSMOOTHING = 75;
int SPI_SETFONTSMOOTHINGTYPE = 0x200B;
int FE_FONTSMOOTHINGCLEARTYPE = 2;
int SPI_GETFONTSMOOTHING = 0x004A;

long MType = FE_FONTSMOOTHINGCLEARTYPE;
int b_isfs;

SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &b_isfs, 0);

if (b_isfs)
{
SystemParametersInfo(SPI_SETFONTSMOOTHING,0,0,SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
}
else
{
SystemParametersInfo(SPI_SETFONTSMOOTHING,1,0,SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,MType,&MType,SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
}

return 0;
}
[Ответить]