Согласно документации для функции 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);
}
И вы, вероятно, уже знаете это, но есть слишком много приложений с плохим поведением, чтобы я не упомянул об этом на всякий случай. Если вы делаете это в своем приложении, обязательно сохраните исходное значение, чтобы вы могли восстановить его, когда ваше приложение закрыто! Это просто базовый этикет, когда вы изменяете общесистемные настройки.