4

我的应用程序在台式电脑和/或平板电脑上运行。不过,对于后者,我发现我必须提供一个屏幕键盘——这对于提供的 TTouchKeyboard 来说并不难。我的问题是如何确定触摸是否可用?我找到了一些示例代码,它使 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;

这里还有微软对平板电脑的定义

然后,我搜索了 RTL 和 Delphi 源代码,试图找到更直接地为我提供此信息的例程,其方式与 Delphi 包装操作系统版本信息的方式类似,但我看不到任何(尽管可能是我只是不知道要搜索什么!)。上面的代码风格是检测触摸能力的最佳方式吗?还是我错过了更明显的东西?

4

1 回答 1

2

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

于 2013-05-29T19:18:07.457 回答