Как настроить мышь для повышения точности указателя программно
Как настроить мышь для повышения точности указателя программно в C++? Я знаю, что есть некоторые полезные команды, такие как SystemParametersInfo, для скорости,...
int x = 15;
SystemParametersInfo (SPI_SETMOUSESPEED, NULL, reinterpret_cast (x), SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
... но я не могу найти повышение точности ----
3 ответа
Согласно документации для SystemParametersInfo
функция и SPI_SETMOUSE
:
Устанавливает два пороговых значения мыши и ускорение мыши.
pvParam
Параметр должен указывать на массив из трех целых чисел, который определяет эти значения. Смотрите mouse_event для получения дополнительной информации.
Таким образом, вам нужен массив, содержащий 3 значения, и вы указываете указатель на этот массив в качестве pvParam
параметр при звонке SystemParametersInfo
,
Поскольку все, что вас волнует, - это изменение ускорения (последнее значение), вы, вероятно, захотите сохранить текущие значения для первых двух, пороговые значения мыши. Сделай это, позвонив 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);
}
И вы, вероятно, уже знаете это, но есть слишком много приложений с плохим поведением, чтобы я не упомянул об этом на всякий случай. Если вы делаете это в своем приложении, обязательно сохраните исходное значение, чтобы вы могли восстановить его, когда ваше приложение закрыто! Это просто базовый этикет, когда вы изменяете общесистемные настройки.
"Повышение точности указателя" - это опция ускорения включения / выключения.
SPI_SETMOUSE
Параметр для SystemParametersInfo отрегулирует этот параметр.
Я не могу точно сказать, как влияют значения ускорения, но если вы SPI_GETMOUSE
и отобразить значения с включенной и выключенной настройкой, вы найдете ее.
Это обсуждение имеет немного больше информации. У него есть макрос, который, кажется, делает то, что вы ищете. Это должно быть довольно просто конвертировать в C++; это просто пара вызовов DLL.