zoukankan      html  css  js  c++  java
  • [原]C#重绘标题栏

    using System.Runtime.InteropServices;
     
        public partial class frmMain : Form
        {
            [DllImport("User32.dll")]
            private static extern IntPtr GetWindowDC(IntPtr hwnd);
            [DllImport("User32.dll")]
            private static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
     
            protected override void WndProc(ref Message m)
            {
                base.WndProc(ref m);
                switch (m.Msg)
                {
                    case 0x84:
                        //这里是鼠标的移动事件
                        break;
                    case 0x86: //WM_NCACTIVATE
                        goto case 0x85;
                    case 0x85: //WM_NCPAINT
                        //CaptionButtonSize获取窗口标题栏中的按钮的标准大小(以像素为单位)。
                        Size si = new Size(SystemInformation.CaptionButtonSize.Width, SystemInformation.CaptionButtonSize.Height);
                        IntPtr hDC = GetWindowDC(m.HWnd);
                        //把DC转换为.NET的Graphics就可以很方便地使用Framework提供的绘图功能了
                        Graphics gs = Graphics.FromHdc(hDC);
                        Image img = Image.FromFile(Application.ExecutablePath.Replace(".EXE", ".png"));
                        //显示背景图片
                        gs.DrawImage(img, 0, 0);
                        gs.Dispose();
                        //释放GDI资源
                        ReleaseDC(m.HWnd, hDC);
                        break;
                    case 0xA1://WM_NCLBUTTONDOWN
                        break;
                }
            }
      }

    作者:qq283868910 发表于2012-1-9 14:01:29 原文链接
    阅读:43 评论:0 查看评论
  • 相关阅读:
    关于冥想
    Read Later
    你追求的跟我相反
    UML for Java Programmers之dx实战
    20140525
    面试基础-语言基础篇
    面试基础-linux操作系统篇
    面试基础-数据库篇
    面试基础-计算机网络篇
    Eclipse同时编译多个cpp文件
  • 原文地址:https://www.cnblogs.com/SpeakHero/p/2431294.html
Copyright © 2011-2022 走看看