您的位置:首页 > 其它

WinForm特效:桌面上的遮罩层

2008-07-10 18:39 183 查看
一个窗体特效,帮你了解几个windows api函数.效果:windows桌面上增加一个简单的遮罩层,其中WS_EX_TRANSPARENT 比较重要,它实现了鼠标穿透的功能。

using System;

using System.Drawing;

using System.Windows.Forms;

using System.Runtime.InteropServices;

namespace WindowsApplication40

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

[DllImport("user32.dll", EntryPoint = "GetWindowLong")]

public static extern long GetWindowLong(IntPtr hwnd, int nIndex);

[DllImport("user32.dll", EntryPoint = "SetWindowLong")]

public static extern long SetWindowLong(IntPtr hwnd, int nIndex, long dwNewLong);

[DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]

private static extern int SetLayeredWindowAttributes(IntPtr Handle, int crKey, byte bAlpha, int dwFlags);

const int GWL_EXSTYLE = -20;

const int WS_EX_TRANSPARENT = 0x20;

const int WS_EX_LAYERED = 0x80000;

const int LWA_ALPHA = 2;

private void Form1_Load(object sender, EventArgs e)

{

this.BackColor = Color.Silver;

this.TopMost = true;

this.FormBorderStyle = FormBorderStyle.None;

this.WindowState = FormWindowState.Maximized;

SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED);

SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA );

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: