Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка2_дрВ.doc
Скачиваний:
1
Добавлен:
19.08.2019
Размер:
851.97 Кб
Скачать

Налаштування клавіатури

Перша можливість налаштування клавіатури відноситься до встановлення часу затримки для автоповтору. Для цього використовується системна функція SystemParametersInfo з параметром SPI_SETKEYBOARDDELAY. Другий аргумент функції повинен вказувати на час затримки за 4-ма параметрами: 0 - 250 мс, 1 - 500 мс, 2 - 750 мс, 3 - 1000 мс. Існує також можливість отримання текучого значення часу затримки через параметр SPI_GETKEYBOARDDELAY. Наведемо приклад по їх використанню.

Покроковий хід роботи для написання програми на мові С++ функції для встановлення часу затримки:

  1. Функція SetDelay типу bool для встановлення часу затримки з параметром iDelay типу int.

  2. Задаємо змінну iOldDelay = -1 типу int.

  3. Перевіряєм діапазон аргументу 0-3:

  4. Тобто, якщо iDelay < 0 і iDelay > 3, повертаємо значення falce.

  5. Отримуємо текучий час затримки:

  6. Задаємо функцію SystemParametersInfo з чотирма параметрами: SPI_GETKEYBOARDDELAY- для старого часу затримки, 0, взяття адреси параметра iOldDelay і 0.

  7. Якщо значення змінної iOldDelay помилкове або рівне установлюваному, виходимо з програми, повертаючи значення falce.

  8. Встановлюємо нове значення часу затримки:

  9. Задаємо функцію SystemParametersInfo з чотирма параметрами: SPI_SETKEYBOARDDELAY – для нового часу затримки, 0, SPI­F_SENDCHANGE | SPIF_UPDATEINIFILE – для зміни і обновлення файла ініціалізації по часу затримки.

  10. Повертаємо значення функції true.

Існує можливість зміни частоти автоповтору символів. Для цього потрібно надати функції SystemParametersInfo перший аргумент SPI_SETKEYBOARDSPEED, а другий – нове значення частоти (від 0 до 31), де 0- 2,5 символів в секунду, а 31 – це 30 символів в секунду. Інші параметри значень наведені в табл.3.7. Для отримання текучого значення частоти автоповтору використовують параметр SPI_GETKEYBOARDSPEED. Наведемо приклад.

Покроковий хід роботи для написання програми на мові С++ функції для встановлення частоти автоповтору.

  1. Функція SetFreq типу bool для встановлення частоти автоповтору з параметром iFreq типу int.

  2. Задаємо змінну iOldDelay = -1 типу int.

  3. Перевіряєм діапазон аргументу 0-31:

  4. Тобто, якщо iFreq < 0 і iFreq > 31, повертаємо значення falce.

  5. Отримуємо текучу частоту затримки:

  6. Задаємо функцію SystemParametersInfo з чотирма параметрами: SPI_GETKEYBOARDSPEED- для отримання старої частоти автоповтору, 0, взяття адреси параметра iOldFreq і 0.

  7. Якщо значення iOldFreq помилкове або рівне iFreq - установлюваному, виходимо і повертаємо значення функції falce.

  8. Встановлюємо нове значення частоти автоповтору:

  9. Задаємо функцію SystemParametersInfo з чотирма параметрами: SPI_SETKEYBOARDDELAY – для встановлення нової частоти, 0, SPI­F_SENDCHANGE | SPIF_UPDATEINIFILE – для зміни і обновлення файлу ініціалізації.

  10. Повертаємо значення функції truе.

Ще одна інтересна функція – це прояв мигання текстового курсору та його зміна. Для цієї функції використовується системна функція SetCaretBlinkTime. Єдиний аргумент функції задає проміжок часу (в мілісекундах) між двома появами текстового курсору на екрані. Існує також функція, яка дозволяє отримати текуче значення часу мигання курсора GetCaretBlinkTime. Змінена частота мигання буде застосовуватися до всіх програм. Наведемо програмний приклад зміни частоти мигання курсора.

Покроковий хід роботи для написання програми на мові С++ функції для зміни частоти мигання курсора:

  1. Функція SetFreqCart типу bool для зміни частоти мигання курсора з параметром iFreq типу int.

  2. Задаємо змінну iOldFreq = 200 типу int.

  3. Перевіряєм діапазон аргументу 200-1200:

  4. Тобто, якщо iFreq < 200 і iFreq > 1200, повертаємо значення falce.

  5. Отримуємо текуче значення частоти:

  6. Застосовуємо системну функцію GetCaretBlinkTime () і передаємо значення змінній iOldFreq.

  7. Якщо значення рівне установлюваному або неотримане, виходимо і повертаємо значення falce.

  8. Повертаємо значення функції true.

При успішному завершенні функція SetCaretBlinkTime повинна повертати ненульове значення. Якщо функція повернула 0, це значить, що виникла помилка, розширений опис якої можна виявити, застосувавши виклик GetLastError. Те ж саме стосується функції GetCaretBlinkTime.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]