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

昨天晚上看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自带窗体阴影,所以不在此例。

加支付宝好友偷能量挖...


评论(0)网络
阅读(103)喜欢(0)Asp.Net/C#/WCF