Member 12717738 Ответов: 0

Как рисовать на заголовке формы windows без перезаписи в windows 10?


Я пытаюсь нарисовать изображение на подписи, обрабатывая сообщение WM_NCPAINT. Но вскоре изображение перезаписывается. Какие еще сообщения мне нужно обработать, если мне нужно убедиться, что изображение сохраняется в строке заголовка? Или этот вариант больше не возможен в windows 10? Мне нужно, чтобы форма имела ту же тему, что и остальные окна. Так что удаление стандартной рамки для меня не вариант.

protected override void WndProc(ref Message m)
{
  if (m.Msg == Win32Utilities.WM_NCPAINT || m.Msg == Win32Utilities.WM_NCACTIVATE)
  {
    base.WndProc(ref m);
    IntPtr hdc = GetWindowDC(m.HWnd);
    try
    {
      using (Graphics g = Graphics.FromHdc(hdc))
      {

        Rectangle rect = GetMuxModeStatusRectangle();
        //Rectangle title = GetTitleBarRectangle();
        //g.Clip = new Region(title);
        //g.Clear(SystemColors.Window);
        g.DrawImageUnscaled(buttonBuffer, new Point(rect.X, rect.Y));

        g.Flush();
        }
      }
      finally
      {
        ReleaseDC(m.HWnd, hdc);
      }
  }
  else
  {
     base.WndProc(ref m);
  }
}


Что я уже пробовал:

Я проверил, что изображение рисуется, комментируя
база.WndProc(ref m);

0 Ответов