winform窗体边框重绘 想要在窗体右上角的最小键旁边添加一个按钮没弄过,如何重绘?谢谢。。X X 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把原本得都隐藏起来、自己拖几个btn上去实现就行了 参考此帖CC2013高仿QQ界面 在网上找到了一段窗体重绘代码,看不懂。。谁能帮我解释一下,谢谢 [DllImport("user32.dll")] private static extern IntPtr GetWindowDC(IntPtr hWnd); [DllImport("user32.dll")] private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); private const int WM_NCPAINT = 0x0085; private const int WM_NCACTIVATE = 0x0086; private const int WM_NCLBUTTONDOWN = 0x00A1; protected override void WndProc(ref Message m) { base.WndProc(ref m); Rectangle vRectangle = new Rectangle((Width - 75) / 2, 3, 75, 25); switch (m.Msg) { case WM_NCPAINT: case WM_NCACTIVATE: IntPtr vHandle = GetWindowDC(m.HWnd); Graphics vGraphics = Graphics.FromHdc(vHandle); vGraphics.FillRectangle(new LinearGradientBrush(vRectangle, Color.Pink, Color.Purple, LinearGradientMode.BackwardDiagonal), vRectangle); StringFormat vStringFormat = new StringFormat(); vStringFormat.Alignment = StringAlignment.Center; vStringFormat.LineAlignment = StringAlignment.Center; vGraphics.DrawString("About", Font, Brushes.BlanchedAlmond, vRectangle, vStringFormat); vGraphics.Dispose(); ReleaseDC(m.HWnd, vHandle); break; case WM_NCLBUTTONDOWN: Point vPoint = new Point((int)m.LParam); vPoint.Offset(-Left, -Top); if (vRectangle.Contains(vPoint)) MessageBox.Show(vPoint.ToString()); break; } } 重写WndProc、在绘制窗口的时候在顶层再画一个按钮、后面是根据拿到已经画好按钮的坐标、在坐标内触发click事件这方法不是挺好的么,就用这个 asp.net mvc3 路由的问题 获得德国日期的日历周 请问在。NET平台下,有没有办法把VB和C#的语言互相转换。 数据库操作问题 欲在C#中实现报头封装 windows2000的所有组件的版本号信息放在注册表什么位置? 怎么锁定焦点? 怎样屏蔽win键 请问大侠,在咱们上网时写输网址时,那个前面的www是什么意思???急,在线等!!! 是不是vc.net对directx的支持比c#对directx的支持好呢? 只反射类属性成员只含Get 关于多线程的内存问题
CC2013高仿QQ界面
谁能帮我解释一下,谢谢 [DllImport("user32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hWnd);
[DllImport("user32.dll")]
private static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); private const int WM_NCPAINT = 0x0085;
private const int WM_NCACTIVATE = 0x0086;
private const int WM_NCLBUTTONDOWN = 0x00A1;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
Rectangle vRectangle = new Rectangle((Width - 75) / 2, 3, 75, 25);
switch (m.Msg)
{
case WM_NCPAINT:
case WM_NCACTIVATE:
IntPtr vHandle = GetWindowDC(m.HWnd);
Graphics vGraphics = Graphics.FromHdc(vHandle);
vGraphics.FillRectangle(new LinearGradientBrush(vRectangle,
Color.Pink, Color.Purple, LinearGradientMode.BackwardDiagonal),
vRectangle); StringFormat vStringFormat = new StringFormat();
vStringFormat.Alignment = StringAlignment.Center;
vStringFormat.LineAlignment = StringAlignment.Center;
vGraphics.DrawString("About", Font, Brushes.BlanchedAlmond,
vRectangle, vStringFormat); vGraphics.Dispose();
ReleaseDC(m.HWnd, vHandle);
break;
case WM_NCLBUTTONDOWN:
Point vPoint = new Point((int)m.LParam);
vPoint.Offset(-Left, -Top);
if (vRectangle.Contains(vPoint))
MessageBox.Show(vPoint.ToString());
break;
}
}
重写WndProc、在绘制窗口的时候在顶层再画一个按钮、后面是根据拿到已经画好按钮的坐标、在坐标内触发click事件
这方法不是挺好的么,就用这个