日期:2014-05-18  浏览次数:20820 次

请问如何用用c#实现透明窗体的移动
我想用c#实现“金山词霸-背单词”那样的效果,采用了使TransparencyKey同窗体背景色相同的办法,但窗体镂空后无法接收鼠标事件了,用了调用GetAsyncKeyState()检测鼠标状态,再发送消息的办法,实现也不理想,请问有没有更好的方法。
谢谢! 


------解决方案--------------------
贴代码来看看吧,这样说不好说。
不过可以肯定的是,是否透明 与 接受鼠标事件没有太直接的关系,
重点就是看看代码中的消息处理函数,是否包 鼠标事件也处理掉了。
比如:
PreProcessMessage
CreateParams
------解决方案--------------------
利用mousedown和mousemove事件,当用户按下鼠标左键并拖动时,通过调用Form.Move即可拖动窗体。按下鼠标左键得到一个坐标,mousemove事件中得到一个新坐标,两坐标相减,得到了窗体移动的位移。