2015-07-20 103 views
-4

我設置WS_EX_TRANSPARENT標誌在窗口下面的代碼:WS_EX_TRANSPARENT和手寫筆事件

SetWindowLong(hwnd, GWL_EXSTYLE,WS_EX_TRANSPARENT | WS_EX_COMPOSITED | WS_EX_LAYERED); 

該標誌使該鼠標事件進入windows系統,而不是我的應用程序。 當我設置它時,我無法在hwnd窗口中獲得Stylus事件。任何方式來解決這個或那是不可能的?

+0

WM_TOUCH ???這不是一個風格的標誌。啓用觸摸需要調用RegisterTouchWindow()。 –

+0

好的。沒有這個的相同行爲。編輯的問題。 – juangrdiazrestu

回答

1

用於Layered WindowsWS_EX_TRANSPARENT擴展的窗口式的行爲記載:

[I] F中的分層窗口具有WS_EX_TRANSPARENT擴展窗口風格,分層窗口的形狀將被忽略,並且鼠標事件將傳遞給分層窗口下的其他窗口。

注意:對於所有指針設備,輸入處理規則通常是相同的。無論何時您閱讀「鼠標事件」,都可以將其擴展爲「來自指點設備的輸入事件」

一個解決方法是在文檔中給出了WS_EX_TRANSPARENT

爲了實現透明度不受這些限制,使用SetWindowRgn功能。

+0

我需要整個應用程序的窗口,而不僅僅是一個區域。另外,我需要將鼠標事件傳遞給其他窗口,並且只能獲得觸控筆事件。 – juangrdiazrestu

+0

關於您的編輯:我可以使用MouseHook在WS_EX_TRANSPARENT窗口中獲取鼠標事件,但不能使用Stylus事件。 – juangrdiazrestu

+0

@juangrdiazrestu:正如我在答覆中指出的那樣,來自所有指點設備的輸入處理方式是相同的。如果你想有不同的行爲,你將不得不自己實施過濾。我也有點相信,你正在使用'WS_EX_TRANSPARENT'來實現它不適合的東西。請務必閱讀[像蛋糕一樣,WS_EX_TRANSPARENT是謊言,或者至少不是全部真相](http://blogs.msdn.com/b/oldnewthing/archive/2012/12/17/10378525.aspx)。 – IInspectable