コード例 #1
0
ファイル: MainForm.cs プロジェクト: shenturk/csharpweather
 private void settingsBox_Click(object sender, EventArgs e)
 {
     Win32.Point p = new Win32.Point();
     Win32.GetCursorPos(ref p);
     contextMenuStrip1.Show(p.X, p.Y);
 }
コード例 #2
0
ファイル: MainForm.cs プロジェクト: shenturk/csharpweather
        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);
        }
コード例 #3
0
ファイル: MainForm.cs プロジェクト: shenturk/csharpweather
 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);
         }
     }
 }