Функция SetGestureConfig (winuser.h)
Настраивает сообщения, отправляемые из окна для жестов Windows Touch.
Синтаксис
BOOL SetGestureConfig(
[in] HWND hwnd,
[in] DWORD dwReserved,
[in] UINT cIDs,
[in] PGESTURECONFIG pGestureConfig,
[in] UINT cbSize
);
Параметры
[in] hwnd
Дескриптор окна для настройки конфигурации жестов.
[in] dwReserved
Это значение зарезервировано и должно иметь значение 0.
[in] cIDs
Количество передаваемых структур конфигурации жестов.
[in] pGestureConfig
Массив структур конфигурации жестов, определяющих конфигурацию жестов.
[in] cbSize
Размер структуры конфигурации жестов (GESTURECONFIG).
Возвращаемое значение
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Чтобы получить расширенные сведения об ошибке, используйте функцию GetLastError .
Комментарии
Если вы не ожидаете изменять конфигурацию жестов, вызовите SetGestureConfig во время создания окна. Если вы хотите динамически изменять конфигурацию жестов, вызовите SetGestureConfig в ответ на WM_GESTURENOTIFY сообщения.
В следующей таблице показаны идентификаторы жестов, поддерживаемые элементом dwID структуры GESTURECONFIG . Обратите внимание, что параметр dwID в значение 0 означает, что установлены глобальные флаги конфигурации жестов.
Имя | Значение | Описание |
---|---|---|
GID_ZOOM | 3 | Параметры конфигурации для жеста масштабирования. |
GID_PAN | 4 | Жест сдвига. |
GID_ROTATE | 5 | Жест поворота. |
GID_TWOFINGERTAP | 6 | Жест касания двумя пальцами. |
GID_PRESSANDTAP | 7 | Жест нажатия и касания. |
Следующие флаги используются, если dwID имеет нулевое значение.
Имя | Значение | Описание |
---|---|---|
GC_ALLGESTURES | 0x00000001 | Все жесты. |
Следующие флаги используются, если параметру dwID присвоено значение GID_ZOOM.
Имя | Значение | Описание |
---|---|---|
GC_ZOOM | 0x00000001 | Жест масштабирования. |
Следующие флаги используются, если для dwID задано значение GID_PAN.
Имя | Значение | Описание |
---|---|---|
GC_PAN | 0x00000001 | Все жесты сдвига. |
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | 0x00000002 | Вертикальные сдвиги одним пальцем. |
GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY | 0x00000004 | Горизонтальные сдвиги одним пальцем. |
GC_PAN_WITH_GUTTER | 0x00000008 | Сдвиг с границей желоба по краям области сдвига. Граница желоба ограничивает перпендикулярное движение в основном направлении до достижения порога для выхода из желоба. |
GC_PAN_WITH_INTERTIA | 0x00000010 | Сдвиг с инерцией для плавного замедления при остановке жестов панорамирования. |
GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY
удаление вертикального сдвига одним пальцем из бита dwBlock позволит включить как вертикальный, так и горизонтальный сдвиг.
Имя | Значение | Описание |
---|---|---|
GC_ROTATE | 0x00000001 | Жест поворота. |
Следующие флаги используются, если параметру dwID присвоено значение GID_TWOFINGERTAP.
Имя | Значение | Описание |
---|---|---|
GC_TWOFINGERTAP | 0x00000001 | Жест касания двумя пальцами. |
Следующие флаги используются, если dwID имеет значение GID_PRESSANDTAP.
Имя | Значение | Описание |
---|---|---|
GC_PRESSANDTAP | 0x00000001 | Жест нажатия и касания. |
Примеры
В следующем примере показано, как можно получить горизонтальное и вертикальное сдвиг одним пальцем без канавы и без инерции. Это типичная конфигурация для двухадрисового приложения навигации, например приложения Microsoft PixelSense Globe.
// set up our want / block settings
DWORD dwPanWant = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_ROTATE, GC_ROTATE, 0},
{ GID_PAN, dwPanWant , dwPanBlock}
};
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
В следующем примере показано, как получить жесты сдвига одним пальцем и отключить сдвиг желоба. Это типичная конфигурация для приложений, которые прокручивают текст, например Блокнот.
// set up our want / block settings
DWORD dwPanWant = GC_PAN | GC_PAN_WITH_SINGLE_FINGER_VERTICALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER;
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_ROTATE, GC_ROTATE, 0},
{ GID_PAN, dwPanWant , dwPanBlock}
};
UINT uiGcs = 3;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
В следующем примере показано, как отключить все жесты.
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {0,0,GC_ALLGESTURES};
UINT uiGcs = 1;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
В следующем примере показано, как включить все жесты.
GESTURECONFIG gc = {0,GC_ALLGESTURES,0};
UINT uiGcs = 1;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, &gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
В следующем примере показано, как включить все жесты Windows 7.
// set the settings in the gesture configuration
GESTURECONFIG gc[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_ROTATE, GC_ROTATE, 0},
{ GID_PAN, GC_PAN , 0},
{ GID_TWOFINGERTAP, GC_TWOFINGERTAP , 0},
{ GID_PRESSANDTAP, GC_PRESSANDTAP , 0}
};
UINT uiGcs = 5;
BOOL bResult = SetGestureConfig(hWnd, 0, uiGcs, gc, sizeof(GESTURECONFIG));
if (!bResult){
DWORD err = GetLastError();
}
В следующем примере конфигурации родительское окно будет включать поддержку масштабирования, горизонтального сдвига и вертикального сдвига, а дочернее окно будет поддерживать только горизонтальный сдвиг.
// set up our want / block settings for a parent window
DWORD dwPanWant = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
DWORD dwPanBlock = GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
// set the settings in the gesture configuration
GESTURECONFIG gcParent[] = {{ GID_ZOOM, GC_ZOOM, 0 },
{ GID_PAN, dwPanWant , dwPanBlock}
};
// Set the pan settings for a child window
dwPanWant = GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY;
dwPanBlock = GC_PAN_WITH_SINGLE_FINGER_VERTICALLY | GC_PAN_WITH_GUTTER | GC_PAN_WITH_INERTIA;
GESTURECONFIG gcChild[] = {{ GID_ZOOM, 0, GC_ZOOM },
{ GID_PAN, dwPanWant , dwPanBlock}
};
UINT uiGcs = 2;
BOOL bResult = FALSE;
if (isParent){
bResult = SetGestureConfig(hWnd, 0, uiGcs, gcParent, sizeof(GESTURECONFIG));
}else{
bResult = SetGestureConfig(hWnd, 0, uiGcs, gcChild, sizeof(GESTURECONFIG));
}
if (!bResult){
DWORD err = GetLastError();
}
Требования
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |