码迷,mamicode.com
首页 > Windows程序 > 详细

WinForm特效:桌面上的遮罩层

时间:2014-09-19 11:56:15      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:winform   style   blog   http   color   io   os   ar   strong   

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

[csharp] view plaincopy
  1. using System;  
  2.   
  3. using System.Drawing;  
  4.   
  5. using System.Windows.Forms;  
  6.   
  7. using System.Runtime.InteropServices;  
  8.   
  9. namespace WindowsApplication40  
  10.   
  11. {  
  12.   
  13.     public partial class Form1 : Form  
  14.   
  15.     {  
  16.   
  17.         public Form1()  
  18.   
  19.         {  
  20.   
  21.             InitializeComponent();  
  22.   
  23.         }  
  24.   
  25.         [DllImport("user32.dll", EntryPoint = "GetWindowLong")]  
  26.   
  27.         public static extern long GetWindowLong(IntPtr hwnd, int nIndex);  
  28.   
  29.   
  30.   
  31.         [DllImport("user32.dll", EntryPoint = "SetWindowLong")]  
  32.   
  33.         public static extern long SetWindowLong(IntPtr hwnd, int nIndex, long dwNewLong);  
  34.   
  35.   
  36.   
  37.         [DllImport("user32", EntryPoint = "SetLayeredWindowAttributes")]  
  38.   
  39.         private static extern int SetLayeredWindowAttributes(IntPtr Handle, int crKey, byte bAlpha, int dwFlags);  
  40.   
  41.   
  42.   
  43.         const int GWL_EXSTYLE = -20;  
  44.   
  45.         const int WS_EX_TRANSPARENT = 0x20;  
  46.   
  47.         const int WS_EX_LAYERED = 0x80000;  
  48.   
  49.         const int LWA_ALPHA = 2;  
  50.   
  51.   
  52.   
  53.   
  54.   
  55.         private void Form1_Load(object sender, EventArgs e)  
  56.   
  57.         {  
  58.   
  59.             this.BackColor = Color.Silver;  
  60.   
  61.             this.TopMost = true;  
  62.   
  63.             this.FormBorderStyle = FormBorderStyle.None;  
  64.   
  65.             this.WindowState = FormWindowState.Maximized;  
  66.   
  67.             SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) | WS_EX_TRANSPARENT | WS_EX_LAYERED);  
  68.   
  69.             SetLayeredWindowAttributes(Handle, 0, 128, LWA_ALPHA );  
  70.   
  71.   
  72.   
  73.         }  
  74.   
  75.     }  
  76.   
  77. }  

WinForm特效:桌面上的遮罩层

标签:winform   style   blog   http   color   io   os   ar   strong   

原文地址:http://www.cnblogs.com/gc2013/p/3979419.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!