我設置WS_EX_TRANSPARENT標誌在窗口下面的代碼:WS_EX_TRANSPARENT和手寫筆事件
SetWindowLong(hwnd, GWL_EXSTYLE,WS_EX_TRANSPARENT | WS_EX_COMPOSITED | WS_EX_LAYERED);
該標誌使該鼠標事件進入windows系統,而不是我的應用程序。 當我設置它時,我無法在hwnd窗口中獲得Stylus事件。任何方式來解決這個或那是不可能的?
我設置WS_EX_TRANSPARENT標誌在窗口下面的代碼:WS_EX_TRANSPARENT和手寫筆事件
SetWindowLong(hwnd, GWL_EXSTYLE,WS_EX_TRANSPARENT | WS_EX_COMPOSITED | WS_EX_LAYERED);
該標誌使該鼠標事件進入windows系統,而不是我的應用程序。 當我設置它時,我無法在hwnd窗口中獲得Stylus事件。任何方式來解決這個或那是不可能的?
用於Layered Windows的WS_EX_TRANSPARENT
擴展的窗口式的行爲記載:
[I] F中的分層窗口具有WS_EX_TRANSPARENT擴展窗口風格,分層窗口的形狀將被忽略,並且鼠標事件將傳遞給分層窗口下的其他窗口。
注意:對於所有指針設備,輸入處理規則通常是相同的。無論何時您閱讀「鼠標事件」,都可以將其擴展爲「來自指點設備的輸入事件」。
一個解決方法是在文檔中給出了WS_EX_TRANSPARENT:
爲了實現透明度不受這些限制,使用SetWindowRgn功能。
我需要整個應用程序的窗口,而不僅僅是一個區域。另外,我需要將鼠標事件傳遞給其他窗口,並且只能獲得觸控筆事件。 – juangrdiazrestu
關於您的編輯:我可以使用MouseHook在WS_EX_TRANSPARENT窗口中獲取鼠標事件,但不能使用Stylus事件。 – juangrdiazrestu
@juangrdiazrestu:正如我在答覆中指出的那樣,來自所有指點設備的輸入處理方式是相同的。如果你想有不同的行爲,你將不得不自己實施過濾。我也有點相信,你正在使用'WS_EX_TRANSPARENT'來實現它不適合的東西。請務必閱讀[像蛋糕一樣,WS_EX_TRANSPARENT是謊言,或者至少不是全部真相](http://blogs.msdn.com/b/oldnewthing/archive/2012/12/17/10378525.aspx)。 – IInspectable
WM_TOUCH ???這不是一個風格的標誌。啓用觸摸需要調用RegisterTouchWindow()。 –
好的。沒有這個的相同行爲。編輯的問題。 – juangrdiazrestu