在适用于Windows的Delphi应用程序中检测触摸功能(平板电脑)的最佳做法是什么?

时间:2013-05-29 14:23:40

标签: delphi touch

我的应用在桌面PC和/或平板电脑上运行。对于后者,我看到我必须提供一个屏幕键盘 - 这对于提供的TTouchKeyboard并不难。我的问题是如何确定触摸是否可用?我发现some sample code使WinAPi调用了GetSystemMetrics:

function GetTouchCapabilities : TTouchCapabilities;
 var ADigitizer : integer;
 begin
 result := [];
 // First check if the system is a TabletPC
 if GetSystemMetrics(SM_TABLETPC) <> 0 then begin
   include(result,tcTabletPC);
   if CheckWin32Version(6,1) then begin // If Windows 7, then we can do additional tests on input type
    ADigitizer := GetSystemMetrics(SM_DIGITIZER);
    if ((ADigitizer and NID_INTEGRATED_TOUCH) <> 0) then include(result,tcIntTouch);
    if ((ADigitizer and NID_EXTERNAL_TOUCH) <> 0) then include(result,tcExtTouch);
    if ((ADigitizer and NID_INTEGRATED_PEN) <> 0) then include(result,tcIntPen);
    if ((ADigitizer and NID_EXTERNAL_PEN) <> 0) then include(result,tcExtPen);
    if ((ADigitizer and NID_MULTI_INPUT) <> 0) then include(result,tcMultiTouch);
    if ((ADigitizer and NID_READY) <> 0) then include(result,tcReady);
   end else begin
    // If not Windows7 and TabletPC detected, we asume that it's ready
    include(result,tcReady);
   end;
 end;
 end;

还有Microsoft definition of a tablet PC here

然后我搜索了RTL和Delphi源代码,尝试找到更直接给我这些信息的例程,类似于Delphi如何包装操作系统版本信息,但我看不到任何内容(尽管它可能是我只是不知道要搜索什么!)。以上代码风格是检测触摸功能的最佳方式吗?还是我错过了一些更明显的东西?

1 个答案:

答案 0 :(得分:2)

AFAIK,Delphi没有提供报告Tablet PC功能的包装器,因此您所展示的是您需要在代码中使用的内容。