Как настроить мышь для повышения точности указателя программно - PullRequest
3 голосов
/ 11 октября 2010

Как настроить мышь для повышения точности указателя программно в C ++?Я знаю, что есть некоторые полезные команды, такие как SystemParametersInfo, для скорости, ...

int x = 15;

SystemParametersInfo (SPI_SETMOUSESPEED, NULL, reinterpret_cast (x), SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

*1005*

... но я не могу найти повышение точности ----

Ответы [ 3 ]

7 голосов
/ 29 января 2012

Согласно документации для функции SystemParametersInfo и SPI_SETMOUSE:

Устанавливает два пороговых значения мыши и ускорение мыши.Параметр pvParam должен указывать на массив из трех целых чисел, который определяет эти значения.См. mouse_event для получения дополнительной информации.

Итак, вам нужен массив, содержащий 3 значения, и вы указываете указатель на этот массив в качестве параметра pvParam при вызове SystemParametersInfo.

Поскольку все, что вас волнует, это изменение ускорения (последнее значение), вы, вероятно, захотите сохранить значения current для первых двух, пороговые значения мыши.Сделайте это, вызвав SystemParametersInfo с флагом SPI_GETMOUSE для получения этих значений, затем изменив последнее (ускорение), а затем снова вызвав SystemParametersInfo, на этот раз с флагом SPI_SETMOUSE.

Пример кода (без рекомендуемой проверки ошибок):

// Turns mouse acceleration on/off by calling the SystemParametersInfo function.
// When mouseAccel is TRUE, mouse acceleration is turned on; FALSE for off.
void SetMouseAcceleration(BOOL mouseAccel)
{
    int mouseParams[3];

    // Get the current values.
    SystemParametersInfo(SPI_GETMOUSE, 0, mouseParams, 0);

    // Modify the acceleration value as directed.
    mouseParams[2] = mouseAccel;

    // Update the system setting.
    SystemParametersInfo(SPI_SETMOUSE, 0, mouseParams, SPIF_SENDCHANGE);
}

И вы, вероятно, уже знаете это, но есть слишком много приложений с плохим поведением, чтобы я не упомянул об этом на всякий случай. Если вы делаете это в своем приложении, обязательно сохраните исходное значение, чтобы вы могли восстановить его, когда ваше приложение закрыто! Это просто базовый этикет, когда вы изменяете общесистемные настройки.

1 голос
/ 11 октября 2010

В этом обсуждении есть немного больше информации.У него есть макрос, который, кажется, делает то, что вы ищете.Это должно быть довольно просто конвертировать в C ++;это всего лишь пара вызовов DLL.

1 голос
/ 11 октября 2010

«Повышение точности указателя» - опция ускорения включения / выключения.

Параметр SPI_SETMOUSE для SystemParametersInfo будет регулировать этот параметр.

Я не могу точно сказать, как влияют значения ускорения, но если вы SPI_GETMOUSE и отобразите значения с включенной и выключенной настройкой, вы найдете ее.

...