應用程式故障排除
本節提供常見問題的解決方案。
一般疑難排解
類別 | 描述 |
---|---|
問題 | 我正在執行 Windows Server 2008 和 Windows Touch 功能無法運作。 |
原因 | 您尚未啟用桌面體驗。 |
解決方案 | 開啟 伺服器管理員 管理工具:按兩下 [開始],指向 [系統管理工具],然後按兩下 [伺服器管理員]。 點擊左欄中的 功能 項目。 按兩下 [功能] 區段中的 [新增功能]。 選取 [ 桌面體驗],按 [下一步],然後按兩下 [ 安裝]。 |
類別 | 描述 |
---|---|
問題 | 每當我在應用程式中快速移動手指時,會出現箭號,而且我的手勢或操作未正確註冊。 |
原因 | 在您不需要時啟用輕彈功能。 |
解決方案 | 當您想要將其停用時,輕彈功能已經啟用。 請參閱舊版支援以瞭解如何停用筆劃動作的相關資訊,以使用滾動條進行平移操作。 |
問題 | 我無法辨別滑鼠輸入和 Windows Touch 輸入。 | ||
原因 | 當使用者點擊畫面時,Windows 會為舊版支援生成滑鼠訊息。 | ||
解決方案 | 您可以針對 WM_LBUTTONDOWN 和 WM_LBUTTONUP 訊息,呼叫 GetMessageExtraInfo 來判斷來源。 下列程式代碼示範如何完成此作業。
|
類別 | 描述 |
---|---|
問題 | 如何在 Windows 7 上執行 Microsoft PixelSense 應用程式? |
原因 | Windows Touch 和 Microsoft PixelSense 不相容。 |
解決方案 | 您必須以 Windows 7 平臺或Microsoft PixelSense 平台為目標。 |
操作和慣性疑難解答
類別 | 描述 |
---|---|
問題 | 我的應用無緣無故地凍結。 當我初始化物件介面時,會遇到存取違反。 |
原因 | 使用 IManipulationProcessor 或 IInertiaProcessor 介面時,缺少 CoInitialize 的呼叫。 |
解決方案 | 這可能是因為具現化 Windows Touch 元件物件模型 (COM) 物件而不呼叫 CoInitialize 所造成。 當您將項目從使用手勢轉換為使用操作界面或慣性界面時,有時會發生這種情況。 |
類別 | 描述 |
---|---|
問題 | 我的物件在翻譯時旋轉不正確。 單指旋轉無法正常運作。 |
原因 | 在物件上設定支點不正確。 |
解決方案 | 您未正確設定操作樞紐點。 將 PivotPointX 和 PivotPointY 屬性設定為您要旋轉的物件或點中央,並將 PivotRadius 屬性設定為物件的半徑。 |
針對 Windows Touch 輸入進行疑難解答
類別 | 描述 |
---|---|
問題 | 處理 WM_TOUCH 訊息之後,我停止收到界限意見反應。 |
原因 | 處理 WM_TOUCH 訊息時不實際處理它,僅僅消耗該訊息。 |
解決方案 | 您可能會取用 Windows Touch 訊息,而不將其轉送至 DefWindowProc,這會導致非預期的行為。 如需如何正確處理WM_TOUCH訊息的詳細資訊,請參閱開始使用Windows Touch 訊息。 |
問題 | 我包含 windows.h,但它仍然顯示 WM_TOUCH 沒有定義。 | ||
原因 | Targetver.h 中的 Windows 版本不正確。 | ||
解決方案 | 您尚未在項目中設定正確的 Windows 版本。 下列程式代碼說明在 Windows 7 中正確設定 Windows Touch 的 Windows 版本。
|
問題 | 我的觸控輸入 x 座標和 Y 座標似乎無效。 它們是大於我預期的值,或是負值。 | ||
原因 | 您可能需要將觸控點轉換成圖元,或可能需要轉換螢幕座標。 | ||
解決方案 | 請確定您呼叫 TOUCH_COORD_TO_PIXEL 和 ScreenToClient。 下列程式碼示範如何執行這項操作。
注意: |
類別 | 描述 |
---|---|
問題 | 我看不到WM_TOUCH訊息,但我知道 Windows Touch 正在運作,因為我看到WM_GESTURE訊息。 |
原因 | 缺少 RegisterTouchWindow 的呼叫。 |
解決方案 | WM_TOUCH和WM_GESTURE訊息互斥。 如果您未呼叫 RegisterTouchWindow,則只會收到WM_GESTURE訊息。 |
類別 | 描述 |
---|---|
問題 | 我注意到,從我手指觸碰屏幕到我的應用程式接收到輸入之間,有些微延遲。 |
原因 | 手掌誤觸防止會導致輸入延遲。 |
解決方案 | 如果在調用RegisterTouchWindow 時設置 TWF_WANTPALM,則會啟用手掌拒識功能。 這會導致小(100 毫秒)的延遲,而軟體會測試輸入是否來自手指、手寫筆或使用者的手掌。 停用手掌拒斥,方法是以清除 TWF_WANTPALM 旗標的狀態來呼叫 RegisterTouchWindow。 |
針對 Windows Touch 手勢進行疑難解答
類別 | 描述 |
---|---|
問題 | 處理 WM_GESTURE 訊息之後,我停止收到界限意見反應。 或者,之前有效的手勢現在不起作用。 |
原因 | 接收WM_GESTURE訊息但不處理。 |
解決方案 | 您可能會取用 Windows Touch 訊息,而不將其轉送至 DefWindowProc,這會導致非預期的行為。 如需如何正確處理WM_GESTURE訊息的詳細資訊,請參閱開始使用Windows手勢。 |
類別 | 描述 |
---|---|
問題 | 我看不到WM_GESTURE訊息,但我知道 Windows Touch 正在運作,因為我看到WM_TOUCH訊息。 |
原因 | 呼叫 RegisterTouchWindow。 |
解決方案 | WM_TOUCH和WM_GESTURE訊息互斥。 如果您呼叫 RegisterTouchWindow,則不會收到WM_GESTURE訊息。 |
問題 | 我看不到我期望看到的所有手勢。 例如,我看到具有標識符GID_PAN的手勢,但看不到GID_ROTATE。 | ||
原因 | 默認不會啟用某些手勢,例如旋轉手勢。 | ||
解決方案 | 當您收到WM_GESTURENOTIFY訊息時,您必須呼叫 SetGestureConfig,如WM_GESTURENOTIFY參考中所述,或您需要新增WM_GESTURENOTIFY訊息的處理程式。 下列程式代碼示範如何實作處理程式,以啟用輪替支援。
如需一般手勢設定的更多範例,請參閱 SetGestureConfig。 |
類別 | 描述 |
---|---|
問題 | 當我執行平移手勢時,應用程式中的自定義滾動條不會捲動。 |
原因 | 遺漏了處理正確WM_*SCROLL訊息的程序。 |
解決方案 | 您不會處理自定義滾動條中的所有WM_*SCROLL 訊息。 建議您處理 WM_GESTURE 訊息,而不是透過舊版支援保留自定義滾動條功能。 您需要支援訊息,如使用滾動條進行移動流覽的舊版支援一節所述。 |
類別 | 描述 |
---|---|
問題 | 手勢動作延遲。 |
原因 | 輕彈可能會造成手勢的延遲。 |
解決方案 | 輕拍可能會導致應用程式接收 WM_GESTURE 訊息所需的時間延遲。 如需了解有關停用輕彈的資訊,請參閱使用滾動條平移的舊版支援。 |
相關主題