在C#中调用系统API使窗体下拥有阴影效果

来源:互联网 发布:启动和关闭mysql 编辑:程序博客网 时间:2024/05/01 05:11
 
 
2007-12-16 00:09

文章来源:http://blog.donews.com/dongshijun//

昨天晚上看MSDN看见的一段通过使用SetClassLong函数使窗口下面拥有一个阴影效果,研究代码找资料弄了半个小时把它运用在了C#2.0上,特此一贴。
由于我使用的方法是调用系统API,所以在引用声明这块要加上一句:
using System.Runtime.InteropServices;
然后再窗口类的随便哪个地方加上:
const int CS_DROPSHADOW = 0x20000;
const int GCL_STYLE = (-26);
//声明Win32 API
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SetClassLong(IntPtr hwnd,int nIndex,int dwNewLong);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int GetClassLong(IntPtr hwnd, int nIndex);
最后在窗体的构造函数中加上:
SetClassLong(this.Handle, GCL_STYLE, GetClassLong(this.Handle, GCL_STYLE) | CS_DROPSHADOW);

编译程序并运行,窗体阴影效果出来了。哦,忘记说了,阴影效果仅支持Win2000/XP/2003。Vista自带窗体阴影,所以不在此例。
原创粉丝点击