在將此標記爲this後的副本之前,請知道我要求的問題比該問題的答案更具清晰度和特異性。爲SendMessage(),Kinect作爲多點觸控設備編寫WM_TOUCH消息
具體來說,我想知道如何在C#中構建一個WM_TOUCH消息併發送出去。
關於它的文檔(上面鏈接)告訴它是由什麼組成的以及如何收集它發送的信息,但它沒有提到如何實際構建WM_TOUCH消息,而且我也不太瞭解C#的工作原理與我所能找到的。
我知道它應該是這個樣子:
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int wMSg, IntPtr wParam, IntPtr lParam);
/* code to make wParam and lParam */
SendMessage(HWND_BROADCAST, WM_TOUCH, _wParam, _lParam);
的wParam參數將是一個int,告訴多點觸控的lParam的範圍內發現了多少分。 lParam本身「包含一個觸摸輸入句柄,可用於調用GetTouchInputInfo以根據msdn頁面檢索與此消息相關聯的觸點的詳細信息」「。 GetTouchInputInfo函數返回TOUCHINPUT結構。
我的問題是如何在C#中構建TOUCHINPUT結構體(因爲文檔是C++)以及如何通過SendMessage()函數傳遞該信息,以便我可以將kinect視爲任何一般的多點觸控設備多點觸摸應用程序。
謝謝你如何構建結構,但我仍然需要解決返回結構的GetTouchInputInfo句柄。或者,這不是一個問題,我可以只傳遞一個TOUCHINPUT結構數組作爲lParam? –
嘿斯科特,你需要Marshall從C#(託管)到C/C++(非託管)的調用。看看這裏:http://msmvps.com/blogs/gdicanio/正在使用SAFEARRAY方法。這將在C#中創建一個數組,然後使用CComSafeArray進行編組。 – blorkfish
斯科特和/或blorkfish,你們都知道如何創建一個有效的「觸摸輸入句柄」?它實際上只是一個指向一堆TOUCHINPUT結構的指針,還是類似的東西?如果你有一個答案,你可能想要在http://stackoverflow.com/questions/15117490/creating-a-wm-touch-message-for-postmessage-in-c-sharp-net給我,我會非常感謝!謝謝。 –