private void settingsBox_Click(object sender, EventArgs e) { Win32.Point p = new Win32.Point(); Win32.GetCursorPos(ref p); contextMenuStrip1.Show(p.X, p.Y); }
private void UpdateLayeredForm() { /* Desktop ile uyumlu bir DC olustur. */ IntPtr SrcDC = Win32.CreateCompatibleDC(IntPtr.Zero); /* Olusturdugumuz DC ile uyumlu yeni bir DC daha olusturmaliyiz. Kopyalama icin. */ IntPtr DestDC = Win32.CreateCompatibleDC(SrcDC); /* Cizim yaptigimiz resmin Windows tarafidan anlasilan HBITMAP turunden degiskene ata. Bu kisim onemli. Cizim yaptigimiz resmi gercek dunyaya getiriyoruz. BitmapHandle degiskeni artik Windows tarafindan kullanilanilabilir duruma geldi. */ IntPtr BitmapHandle = bitmap.GetHbitmap(Color.FromArgb(0)); /* SrcDC de bitmap secilmeli */ IntPtr PrevBitmap = Win32.SelectObject(DestDC, BitmapHandle); /* Boyutlar ve konum */ Win32.Size Size = new Win32.Size() { X = Width, Y = Height }; Win32.Point S = new Win32.Point() { X = 0, Y = 0 }; Win32.Point P = new Win32.Point() { X = Left, Y = Top }; Win32.BlendFunction BlendFunc = new Win32.BlendFunction() { BlendOp = Win32.AC_SRC_OVER, BlendFlags = 0x00, /* Sifir olmali */ AlphaFormat = Win32.AC_SRC_ALPHA, SourceConstantAlpha = opacity /* Ana formun donukluk degeri. 0 = tam saydam, 255 = tam donuk. */ }; /* Microsoft'un sihirli fonksiyonu! Oylesine onemli ki, aslinda butun kiyamet burada kopuyor. Detayli aciklamayi MSDN' den mutlaka okuyunuz. http://msdn.microsoft.com/en-us/library/ms633556(VS.85).aspx */ Win32.UpdateLayeredWindow(this.Handle, SrcDC, ref P, ref Size, DestDC, ref S, 0, ref BlendFunc, Win32.ULW_ALPHA); /* SrcDC yi eski haline getir. */ Win32.SelectObject(SrcDC, PrevBitmap); /* ve Bitmap'i yok et. Yoksa hafiza sizmasi olur. */ Win32.DeleteObject(BitmapHandle); /* DC leri yok et. */ Win32.DeleteDC(DestDC); Win32.DeleteDC(SrcDC); }
private void keyTimer_Tick(object sender, EventArgs e) { Win32.Rect rect = new Win32.Rect(); Win32.GetWindowRect(this.Handle, ref rect); Win32.Point p = new Win32.Point(); Win32.GetCursorPos(ref p); if (Win32.PtInRect(ref rect, p)) { short keyState = Win32.GetKeyState(Win32.VK_CONTROL); if ((keyState & 0x8000) != 0) { hibernate = false; SetHibernateState(hibernate); } } }