問題描述:
C++BUILDER XE8 創建的表單在 WIN10+大尺寸多點觸摸屏設備上(60寸以上,就是教學白板那類的設備),執行縮放手勢,程式必死!!!
應用場景:
1、C++BUILDER XE8創建一個原始FORM(無任何自己的代碼)
2、運行后,執行縮放操作的手勢,兩個手指要離的遠一些,如果用一只手的兩根手指執行縮放手勢,則不會出問題。
3、只在WIN10系統才會,WIN7不會
4、只有在大尺寸多點觸摸屏設備上才會
經過排查,是因為在WIN10多點觸摸系統下,觸摸報點的訊息是WM_POINTERDOWN、WM_POINTERUP、WM_POINTERUPDATE,主要出問題的就是WM_POINTERUPDATE這個訊息如果讓他進入默認表單的WndProc函式,則程式會掛掉(在執行縮放手勢時),后想了個辦法,就是攔截這三個觸摸訊息,轉換為常規的滑鼠訊息:WM_LBUTTONDOWN、WM_LBUTTONUP、WM_MOUSEMOVE,然后不執行默認表單的handle函式。這樣可以避免軟體動不動就死機的問題。
但是隨著軟體的實際使用中,發現這種做法的兼容性存在問題,即在某些大屏設備上,只能點擊,不能拖動,貌似沒有WM_POINTERUPDATE訊息一樣。這種情況因為設備不在本省,不方便現場查更細致的原因。
所以,問題就是:如何不自己處理觸摸訊息,讓C++BUILDER XE8(或以上版本)創建的表單可以在WIN10+大尺寸多點觸摸屏設備上正常運行?我感覺這就是C++BUILDER XE的一個BUG,不知如何修復呢?
uj5u.com熱心網友回復:
試試高版本吧,10.2.3版。uj5u.com熱心網友回復:
10我試過,不行。你說的版本我試一下先。uj5u.com熱心網友回復:
沒人遇到過嗎?自己頂一下uj5u.com熱心網友回復:
沒你說的設備,沒法驗證,如果你確認是BUG,可以向EMB提交uj5u.com熱心網友回復:
哦?是嗎?我試試。肯定是BUG,大BUG,VC生成的就不會。謝謝??uj5u.com熱心網友回復:
cb的bug太多了,哎uj5u.com熱心網友回復:
傳統VCL程式的bug很少,因為VCL是開放源代碼的。
uj5u.com熱心網友回復:
這個問題1年多了,也沒能解決,后來用XE10版本,問題同樣存在,C++BUILDER,還能繼續用下去嗎?uj5u.com熱心網友回復:
可以向英巴公司反映一下。uj5u.com熱心網友回復:
不行的話,就放棄自帶的手勢功能,將其禁用。自己用代碼去實作。uj5u.com熱心網友回復:
換個其他品牌/型號的觸摸屏試試uj5u.com熱心網友回復:
我覺得還是要找設備來對比,一臺正常的,一臺不正常的,然后在手勢縮放的時候,攔截訊息,看看兩個設備在手勢縮放的時候,發給你程式的訊息是不是有什么不同轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/12547.html
標籤:VCL組件使用和開發
