前提・実現したいこと
Win32 APIにてWS_EX_LAYERED | WS_EX_TRANSPARENTというスタイルをもつウインドウに対して作成した子ウインドウでは、マウスイベントを透過しないようにしたい。
発生している問題・エラーメッセージ
Win32 APIにてWS_EX_LAYERED | WS_EX_TRANSPARENTというスタイルをもつウインドウに対して、WS_CHILDにて子ウインドウを作成するとマウスイベントが透過されてしまいます。spy++等で子ウインドウを見ると、WS_EX_TRANSPARENT属性がついていないにもかかわらずマウスイベントを透過します。おそらく親から継承されるのでしょうが、MSDNにもそのような記述はありません。
該当のソースコード
C
1HwndParent = CreateWindowEx(WS_EX_TOOLWINDOW | WS_EX_LAYERED | WS_EX_TRANSPARENT, 2 szWindowClass, szTitle, 3 WS_POPUP, 4 100, 100, 5 1000, 1000, 6 nullptr, nullptr, 7 hInstance, nullptr 8 ); 9 10HwndChild = CreateWindowEx(WS_EX_TOOLWINDOW, 11 TEXT("Child"), TEXT("Child"), 12 WS_CHILD, 13 0, 0, 14 500, 500, 15 HwndParent , NULL, 16 winc3.hInstance, NULL 17 ); 18
試したこと
WS_EX_NOINHERITLAYOUT親に付与することで、子ウインドウがWS_EX_TRANSPARENTを継承しないかと思い試しましたがダメでした。
補足情報(FW/ツールのバージョンなど)
Windows10 + Visual Studio 2017
あなたの回答
tips
プレビュー