如何识别是否在可触摸屏幕上绘制窗口?

时间:2016-02-03 14:19:14

标签: windows winapi touch

我想为我的应用设置两种不同的布局:一种用于普通桌面,另一种用于可触摸设备。

如何在支持多点触控的情况下查询是否正在绘制我的应用程序的屏幕?

2 个答案:

答案 0 :(得分:1)

据我所知,没有直接的方法可以根据显示窗口的显示来查询输入功能。但是,您可以查询系统的触摸输入功能。

在Windows XP和Windows Vista上,您可以向系统询问是否将触摸数字转换器连接到系统。但它没有报告,是否支持多点触控。要使用的API是GetSystemMetrics

bool TouchInputAvailable() {
    return ( ::GetSystemMetrics( SM_TABLETPC ) != 0 );
}

对于运行Windows 7或Windows Server 2008 R2(及更高版本)的系统,操作系统也会报告多点触控功能:

bool MultiTouchAvailable() {
    int value = ::GetSystemMetrics( SM_DIGITIZER );
    return ( ( value & ( NID_MULTI_INPUT | NID_READY ) )
                    == ( NID_MULTI_INPUT | NID_READY ) );
}

答案 1 :(得分:0)

尝试调用IsTouchWindow,它是通过Winuser.h定义的。