CreateWindowEx 函数的 dwExStyle 参数中的 WS_EX_TRANSPARENT 值含义不太明白.(300分)

  • 主题发起人 主题发起人 shangshang
  • 开始时间 开始时间
S

shangshang

Unregistered / Unconfirmed
GUEST, unregistred user!
CreateWindowEx 函数的 dwExStyle 参数中的 WS_EX_TRANSPARENT 值含义不太明白.<br>帮助上说的,简略几句而已,不知为什么可以实现鼠标穿透,哪位可以指点一下?
 
If a window is created using CreateWindowEx() with the WS_EX_TRANSPARENT style, windows below it at the position where the original window was initially placed are not obscured and show through. Moving the WS_EX_TRANSPARENT window, however, results in the old window background moving to the new position, because Windows does not support fully functional transparent windows. <br><br>WS_EX_TRANSPARENT was designed to be used in very modal situations and the lifetime of a window with this style must be very short. A good use of this style is for drawing tracking points on the top of another window. For example, a dialog editor would use it to draw tracking points around the control that is being selected or moved. <br><br>In Windows 2000, specific colors in a window can be made truly transparent by giving the window the WS_EX_LAYERED extended style and calling SetLayeredWindowAttributes. <br><br>如果窗口是创建 WS_EX_TRANSPARENT 样式, 使用 CreateWindowEx() 下方窗口位置原始窗口已最初放置位置是不挡住而且通过显示。 因为 Windows 不支持完备透明窗口移动 WS_EX_TRANSPARENT 窗口, 但是, 导致移动到新位置, 旧窗口背景。 <br><br>WS_EX_TRANSPARENT 旨在用于非常模式情况并且生存期为具有此样式窗口必须很短。 为此样式好使用是用于跟踪点绘制于其他窗口之上。 例如, 对话框编辑器将使用它来跟踪点正在控件周围绘制选定或移动。 <br><br>在 Windows 2000, 特定颜色在窗口中通过授予 WS_EX_LAYERED 扩展样式窗口和调用 SetLayeredWindowAttributes 进行真正透明。 <br><br>翻译的乱乱的,还是看原文明白。
 
谢谢,我也修改一下回复
 
Window Styles 中有两个非常关键的标志<br>一个是ExStyle里的WS_EX_TRANSPARENT. 另一个是Style中的WS_CLIPCHILDREN.<br>如果设置了WS_EX_TRANSPARENT标志, 那么该window在刷新时的背景将不会由<br>系统清成默认底色, 而是复制上底层的图象. 所以要实现透明/半透明, 必须设置该<br>标志. 设置了该标记, 然后再截取WM_ERASEBKGND消息, 什么都不做直接返回1<br>就可以实现透明效果.
 
谢谢楼上两位解答<br>nicai_wgl, 你的文字叙述不太通顺,希望能照顾一下我的语文水平.<br>znj_326, 谢谢,你说的是如何实现透明效果,我是在以前的帖子中知道这个参数值可以<br>让窗口做到鼠标穿透操作.很是不解,为什么这样的透明就可以穿透鼠标,而比如用SetLayeredWindowAttributes 就不行?
 
比如这个帖子的实现鼠标穿透的代码<br>http://www.delphibbs.com/delphibbs/DispQ.asp?LID=3141678
 
刚才试了下,带WS_EX_TRANSPARENT参数创建的窗体接收系统消息,但不响应大部分消息,包括最小化、激活等,不接收鼠标键盘事件的消息。
 
呵呵,学会怎么做半透明窗体了
 
帮助上只是讲 WS_EX_TRANSPARENT 关于painted先后上有差异,我不知道怎么联系到不接受其他所有消息上来.<br>也许这个参数中透明的含义跟 alpha透明的含义根本不一回事吧. <br>这个透明就是专用于不接受鼠标键盘输入的意思?当他不存在一样?<br>期待高手指点.
 
后退
顶部