在C#中调用系统API使窗体下拥有阴影效果(转)
2008-11-11 10:43
239 查看
昨天晚上看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自带窗体阴影,所以不在此例。
由于我使用的方法是调用系统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自带窗体阴影,所以不在此例。
相关文章推荐
- 在C#中调用系统API使窗体下拥有阴影效果
- 在C#中调用系统API使窗体下拥有阴影效果(转)
- C#调用系统API
- VC++ 使窗体拥有透明效果地API
- 使窗体拥有透明效果的API
- C# 简单文件备份工具v1.1(系统热键响应、简单调用窗体)
- C#编写影院售票系统(A project with a higher amount of gold )(1:项目需求 ,思路分析与窗体效果)
- 使用C#调用系统API实现内存注入的代码
- C#调用系统API指定快捷键
- C# win32 api入门--自制窗口闪烁效果与模态窗体闪烁效果
- C# 边框阴影窗体效果
- C#中调用系统API打开和关闭光驱
- C# WinForm无边框窗体设置阴影效果
- C#调用系统API实现内存注入的代码
- C#调用API 实现窗体总在最上
- C#-WinForm-无边框窗体的移动和阴影-API
- 使窗体拥有透明效果的API
- C#_让WinForm窗体拥有动画效果(淡入淡出等…)
- C# 边框阴影窗体效果
- 【转】C#窗体飞入飞出的动画效果(Api)