关于将窗体嵌入桌面的问题 ( 积分: 200 )

M

macross

Unregistered / Unconfirmed
GUEST, unregistred user!
我打算把一个带Alpha透明的窗体嵌入桌面,&nbsp;但是总失败.贴一下代码请高人帮忙看看.谢谢!<br><br>procedure&nbsp;TfmSite.FormCreate(Sender:&nbsp;TObject);<br>begin<br>&nbsp;&nbsp;SetWindowLong(Handle,&nbsp;GWL_EXSTYLE,&nbsp;GetWindowLong(Handle,&nbsp;GWL_EXSTYLE)&nbsp;or&nbsp;WS_EX_LAYERED);<br>&nbsp;&nbsp;SetLayeredWindowAttributes(Handle,&nbsp;0,&nbsp;192,&nbsp;LWA_ALPHA&nbsp;or&nbsp;LWA_COLORKEY);<br>&nbsp;&nbsp;Windows.SetParent(Handle,&nbsp;DesktopHWND);<br>end;<br>其中&nbsp;DesktopHWND&nbsp;:=&nbsp;FindWindow('Progman',&nbsp;nil);<br><br>执行后的结果是这样的:窗体被移到所有窗口的最下层,且变为完全透明,但是功能仍在。我在窗体上放置了一个TWebBrowser,在其位置上点右键仍然可以弹出IE菜单来。<br>单独执行&nbsp;&nbsp;Windows.SetParent(Handle,&nbsp;DesktopHWND);&nbsp;即可使窗体进入桌面,所有其它窗体都在它上面。但是一旦执行了前面两句(SetWindowLong和SetLayeredWindowAttributes),窗体就完全不见了。<br>请高人帮忙看看如何让窗体能嵌入桌面且保持Alpha效果?<br>谢谢!
 
加句<br>&nbsp;SetWindowLong(Handle,GWL_EXSTYLE,Not&nbsp;WS_CAPTION);<br>&nbsp;欠入以后,打开网页后&nbsp;右键就不出现IE菜单了.
 
一点想法<br>&nbsp;&nbsp;上面的方法欠入以后,只有在点任务栏图标,可以获得程序的焦点.你可以把任务栏隐藏了,就完全欠入了.
 
我是想要能接收到鼠标事件,而且嵌入窗体半透明。<br>任务栏的按钮早已被我干掉[:D]
 
你说的我有点不明白了.前面说的挺模糊的.[?]
 
太晚了,睡觉先。[:)]<br>明天上班继续讨论~~~~
 
我的本意是想做个窗体能半透明(Alpha透明)&nbsp;而且位置是在桌面图标的下面,并且能够操作窗体。<br>现在我只能实现把窗体放到所有其他窗口和桌面图标之间,弄不到图标下面。网上所有能搜到的方法都用了。。。<br>另外目前用我的实现方法不能对它设置Alpha透明,一旦设置了,窗体就会消失(或者说完全透明?),但是窗体仍然能够被操作,而且窗体下面的桌面图标只能看见,不能用。
 
桌面是个ListView&nbsp;找到句柄,验证属于Explorer,应该可以吧.<br>&nbsp;&nbsp;这问题怎么没人答?
 
你的要求好像和一些日历软件有点相像,呵呵,帮顶。
 
我用各种会的方法抓了句柄,并用spy4win验证了抓到的是正确的。但是设置了以后就是行不通。郁闷了。要不就不透明,&nbsp;要不就彻底透明。带Alpha的窗体难道不能跟桌面嵌入在一起么?
 
帮你顶一下,虽然还没有好的思路
 
我在delphi深度探索这本书中好像看过怎么做,但是忘记啦,好像是要拦截一个消息的具体忘了,而不能只是使用函数
 
感谢&nbsp;menzhe&nbsp;.<br>我去翻书看看.
 
顶部