如何重新着色 Windows 窗体的标题栏 C#
How to recolor Windows Form's title bar C#
我只想为应用程序的 windows 表单标题栏重新着色,我在网上找到了这段代码
[DllImport("user32.dll")]
static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("User32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hWnd);
protected override void WndProc(ref System.Windows.Forms.Message m)
{
const int WM_NCPAINT = 0x85;
base.WndProc(ref m);
if (m.Msg == WM_NCPAINT)
{
IntPtr hdc = GetWindowDC(m.HWnd);
if ((int)hdc != 0)
{
Graphics g = Graphics.FromHdc(hdc);
g.FillRectangle(Brushes.Green, 10, 0, 4800, 23);
g.Flush();
ReleaseDC(m.HWnd, hdc);
}
}
}
但是我不知道怎么触发,你能帮我吗?
我所做的是将 FormBorderStyle 属性 设置为 None,然后我使用 flowLayoutPanel 作为我的标题栏,设置鼠标事件并添加 minimize/close 按钮。
我只想为应用程序的 windows 表单标题栏重新着色,我在网上找到了这段代码
[DllImport("user32.dll")]
static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("User32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hWnd);
protected override void WndProc(ref System.Windows.Forms.Message m)
{
const int WM_NCPAINT = 0x85;
base.WndProc(ref m);
if (m.Msg == WM_NCPAINT)
{
IntPtr hdc = GetWindowDC(m.HWnd);
if ((int)hdc != 0)
{
Graphics g = Graphics.FromHdc(hdc);
g.FillRectangle(Brushes.Green, 10, 0, 4800, 23);
g.Flush();
ReleaseDC(m.HWnd, hdc);
}
}
}
但是我不知道怎么触发,你能帮我吗?
我所做的是将 FormBorderStyle 属性 设置为 None,然后我使用 flowLayoutPanel 作为我的标题栏,设置鼠标事件并添加 minimize/close 按钮。