2015-07-20 200 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