首页 > 代码库 > WinForm特效:同时让两个窗体有激活效果

WinForm特效:同时让两个窗体有激活效果

windows api,一个窗体激活的时候给另外一个发消息

[csharp] view plaincopy
  1. using System;  
  2.   
  3. using System.Windows.Forms;  
  4.   
  5. using System.Runtime.InteropServices;  
  6.   
  7. namespace WindowsApplication43  
  8.   
  9. {  
  10.   
  11.     public partial class Form1 : Form  
  12.   
  13.     {  
  14.   
  15.         Form frm =null;  
  16.   
  17.         public Form1()  
  18.   
  19.         {  
  20.   
  21.             InitializeComponent();  
  22.   
  23.             this.Activated += Form_Activated;  
  24.   
  25.         }  
  26.   
  27.         const int WM_NCACTIVATE = 0x86;  
  28.   
  29.         const int WA_ACTIVE = 0x1;  
  30.   
  31.         [DllImport("user32.dll", EntryPoint = "SendMessage")]  
  32.   
  33.         public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);  
  34.   
  35.         private void button1_Click(object sender, EventArgs e)  
  36.   
  37.         {  
  38.   
  39.             frm = new Form();  
  40.   
  41.             frm.Text = "jinjazz";  
  42.   
  43.             frm.Activated += Form_Activated;  
  44.   
  45.             frm.Show();  
  46.   
  47.             frm.Location = new System.Drawing.Point(this.Left + this.Width, this.Top);  
  48.   
  49.             SendMessage(this.Handle, WM_NCACTIVATE, WA_ACTIVE, 0);  
  50.   
  51.         }  
  52.   
  53.         void Form_Activated(object sender, EventArgs e)  
  54.   
  55.         {  
  56.   
  57.             SendMessage(this.Handle, WM_NCACTIVATE, WA_ACTIVE, 0);  
  58.   
  59.             if (frm != null)  
  60.   
  61.                 SendMessage(frm.Handle, WM_NCACTIVATE, WA_ACTIVE, 0);  
  62.   
  63.         }  
  64.   
  65.     }  
  66.   
  67. }  

WinForm特效:同时让两个窗体有激活效果