ClearType включение/выключение

Средства разработки, технические вопросы, отвечает (по мере сил) Отдел Разработок
Закрыто
Аватара пользователя
Тихоня
Доктор (4 lvl)
Сообщения: 349
Зарегистрирован: Ср окт 29, 2003 14:04

ClearType включение/выключение

Сообщение Тихоня » Вт ноя 01, 2005 15:04

Хочу написать утилиту, которая будет включать/выключать 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);
}

Аватара пользователя
Тихоня
Доктор (4 lvl)
Сообщения: 349
Зарегистрирован: Ср окт 29, 2003 14:04

Сообщение Тихоня » Ср ноя 02, 2005 08:52

Угу.. тока какое именно событие в моем случае :-) Я уже и так и этак изголялся.. гм..
dm_ig писал(а):Думаю, что породить событие :)

Какое именно не знаю, но нужно заставить весь экран перерисоваться.

Короче, пример - тут (только событие другое): http://www.hpc.ru/board/viewtopic.php?t=63551

Аватара пользователя
Тихоня
Доктор (4 lvl)
Сообщения: 349
Зарегистрирован: Ср окт 29, 2003 14:04

Сообщение Тихоня » Вт ноя 08, 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;
}

Закрыто

Вернуться в «Программирование для КПК»