2008-09-17 124 views
0

我正在使用VC++/Win32/MFC的舊項目。最近,它成爲一個要求,應用程序在平板電腦工作,這引發了一系列新問題。 我已經能夠在這些問題上工作,並且在這些問題的周圍,但我剩下一個,其中我可以使用一些專家的建議。手寫筆在平板電腦上「擡起」會發生什麼?

我有一個特殊的錯誤,是由觸筆的活動表面的「升力」引起的。基本上,鼠標光標會消失,然後在您將其「按」回屏幕時再次出現。

它是有道理的,這是不適用於應用程序。你不能電梯光標在臺式電腦上。所以我在尋找的是一個很好的概述當電梯發生時會發生什麼(根據Windows消息等)。這是否意味着只關注更改和鼠標懸停事件?我的錯誤似乎也涉及光標變化(儘管可能不與電梯有關)。當然,意外的「提升」正在打破應用程序工具處理的狀態。

所以有形的問題是:

  1. 當手寫筆 「升降機」 時,會發生什麼?新聞界?
  2. 什麼API調用可以用來檢測這個?它只是轉換成標誌/值設置的標準消息?
  3. 當你的開發電腦是桌面電腦時,測試/模擬這個最好的方法是什麼?我只是在這裏瞎瞎嗎? (我只能定期訪問平板電腦)
  4. 什麼代表正確的行爲或平板手寫筆識別的最佳做法?

感謝您的參與, EE

+0

我不幸的是不得不迎合這裏最低的共同點。 90%的用戶將使用XP(或更早版本),因此檢測和功能必須主要來自Windows API,而不會干擾桌面用戶(只有一小部分會使用平板電腦來運行應用程序)。 – el2iot2 2008-09-17 07:03:30

回答

1

爲平板用戶,我可以回答一些您的問題。

第一:

你不能很容易保持「鍵盤焦點」的窗口上,當唱針對TRAIL出焦點窗口的推虛擬鍵盤上的按鍵。

我使用的大多數虛擬鍵盤(Windows平板電腦輸入面板和ubuntu下的一個)允許他們鍵入的程序保持「鍵盤焦點」。

當手寫筆「電梯」發生時會發生什麼?新聞界?

在Windows下,壓力值下降,但在此之外,沒有事件發生。 (我不知道關於linux。)

什麼API調用可以用來檢測這個?它只是轉換成標誌/值設置的標準消息?

如上所述,如果你能得到壓力值,你可以使用它。

當您的開發電腦是桌面時測試/模擬這是一個好方法嗎?我只是在這裏瞎瞎嗎? (我只能定期訪問一臺平板電腦)

當手寫筆放在其他地方時,指針的全局座標發生變化,所以,您可以模擬突然移動的指針與任何允許您更改全局指針值。 (Java中的機器人類使得這很容易)。

什麼代表正確的行爲或平板手寫筆識別的最佳做法?

我建議您閱讀微軟的說法,MSDN網站上有許多優秀的文章。 (http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx) 我會指出應用程序中按鈕的大小會產生巨大的差異。

希望這有幫助。

+0

由於這是一款傳統應用程序,因此有代碼監視離開活動窗口的光標並基於此更改工具狀態。這可能是「鍵盤焦點」問題的一部分,但我已經解決了這個問題。任何關於API調用的想法來獲得壓力水平? – el2iot2 2008-09-17 07:01:18

0

據我所知,沒有「電梯」事件 - 唯一的事件發生時,手寫筆帶回到屏幕後。當然,這取決於你的具體的驅動程序等。

更糟的是,您所描述的錯誤可能只是一個典型的鼠標可重複使用。嘗試儘可能快地移動鼠標 - 它幾乎肯定會一次跳躍幾個像素。或者甚至幾十或幾百個,如果您將鼠標設置配置爲最高指針速度。一次更新,鼠標可能在100,100。下一次更新,可能會在200,300。

+0

根據我的經驗,它似乎沒有(在機器上錯誤被重現),它與「快速移動鼠標」相同。如果我沒有記錯,光標會從屏幕上有效消失。 – el2iot2 2008-09-17 07:01:52

0

@格雷格 - 澄清,這是一臺筆記本電腦,集成了平板電腦和手寫筆內置。該設備沒有專用鍵盤(它是一個虛擬的觸摸屏),不是一個Wacom輸入設備。對困惑感到抱歉。

似乎有一個SDK微軟Windows XP平板電腦版可能有能力得到特殊的細節,如壓力。但是,我知道必須與現有的不支持平板電腦的應用程序達到某種程度的標準兼容性。我想我可以嘗試在平板電腦上安裝Spy ++並嘗試過濾到特定的消息/事件。