实现主要是通过重写窗口过程(WndProc),处理一些非客户区消息(WM_NCxxxx);

 1C# WinForm 中在窗口标题栏上加按钮[DllImport("User32.dll")]
 2C# WinForm 中在窗口标题栏上加按钮        private static extern IntPtr GetWindowDC(IntPtr hwnd);
 3C# WinForm 中在窗口标题栏上加按钮        [DllImport("User32.dll")]
 4C# WinForm 中在窗口标题栏上加按钮        private static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
 5C# WinForm 中在窗口标题栏上加按钮        [DllImport("Kernel32.dll")]
 6C# WinForm 中在窗口标题栏上加按钮        private static extern int GetLastError();
 7C# WinForm 中在窗口标题栏上加按钮        //标题栏按钮的矩形区域。 
 8C# WinForm 中在窗口标题栏上加按钮        Rectangle m_rect = new Rectangle(100612020);
 9C# WinForm 中在窗口标题栏上加按钮        protected override void WndProc(ref Message m)
10        }

1)、C#中重写窗口过程不用再调用SetWindowLong API了,直接overide一个WndProc就可以了。
2)、Windows API中的HDC可以通过Graphics.FromHdc()转换为(创建出)System.Drawing.Graphics,然后就可以用.NET Framework (GID+??)提供的绘图功能方便地进行画图了。终于可以抛开讨厌的GDI API了(说实在话,在C#中调用Windows API真的太麻烦了).

相关文章: