我的应用程序在台式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功能的包装器,因此您展示的是您需要在代码中使用的内容.