在 win32 或 atl/wtl c++ 中使用分层窗口时,如果我将主窗口的 alpha 设置为 0 并在子窗口上绘制假窗口,使其可见并单击窗口,则整个窗口都是单击。我希望能够只点击窗口的区域,而不是整个窗口,假设我想绘制一个圆角窗口,我让底部/主窗口可以点击,但我不希望要点击的上部“假”窗口,我希望能够点击它。我怎么做?到目前为止我在哪里:在主窗口的 OnInitDialog 函数中:
::SetWindowLong( m_hWnd, GWL_EXSTYLE, ::GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
BYTE bTran = 0;
::SetLayeredWindowAttributes( m_hWnd, 0, bTran, LWA_ALPHA);
当我创建假窗口时:
m_hFakeWnd = ::CreateWindowEx( WS_EX_LAYERED | WS_EX_TRANSPARENT | WS_EX_NOACTIVATE | WS_EX_LEFT
, m_strWndClassName
, NULL
, WS_VISIBLE | WS_OVERLAPPED
, rc.left
, rc.top
, rc.Width()
, rc.Height()
, GetSafeHwnd()
, NULL
, ::GetModuleHandle(NULL)
, NULL
);
如果,我设置消除 WS_EX_TRANSPARENT 标志,假窗口是可点击的,而主要是点击,但是!它不响应任何东西!单击/拖动。没有任何。