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

我的应用程序在台式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如何包装操作系统版本信息,但我看不到任何内容(尽管可能是我只是不知道要搜索什么!).以上代码风格是检测触摸功能的最佳方式吗?还是我错过了一些更明显的东西?

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

点赞