如何在窗口周围绘制矩形而不覆盖Win32中的标题栏

走了

我想在窗口周围绘制一个矩形,但是我不想覆盖标题栏。到目前为止,我在窗口回调函数中编写的内容是:

    case WM_NCPAINT:
    {
        HDC hdc;
        RECT rect;
        HPEN pen;

        hdc=GetDCEx(hWnd,(HRGN)wParam,DCX_WINDOW|DCX_CACHE|DCX_INTERSECTRGN|DCX_LOCKWINDOWUPDATE);
        GetWindowRect(hWnd,&rect);
        pen=CreatePen(PS_SOLID, 10, RGB(255, 0, 0));//red pen 10 pixels in size
        SelectObject(hdc,pen);
        Rectangle(hdc,0,0,(rect.right-rect.left),(rect.bottom-rect.top));
        DeleteObject(pen);
        ReleaseDC(hWnd,hdc);
    }
    break;

但是,这会使用白色画笔绘制窗口标题栏。

如何避免不在标题栏上绘画?我正在失去标题栏文本和菜单...

在创建笔之前,我曾尝试使用HOLLOW_BRUSH,如下所示:

        HBRUSH b=CreateSolidBrush(HOLLOW_BRUSH);
        SelectObject(hdc,b);

但这只会导致标题栏根本无法绘制(呈黑色)。

斑马先生

通过处理该WM_NCPAINT消息,您就是在告诉窗口管理器您负责绘制整个非客户区域,因此窗口管理器不会为您绘制任何内容。

如果要绘制原始标题栏,则需要先调用DefWindowProc(),然后在其绘制的“顶部”进行自己的绘制。

ExcludeClipRect()如果您希望使用单个矩形一次绘制整个非客户区域,则可能还需要使用来防止客户区域被覆盖。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Android中删除标题栏?

来自分类Dev

在窗口的标题栏中/上方添加UserControl

来自分类Dev

如何在OSX中更改NSWindow标题栏的颜色

来自分类Dev

如何在Windows 8.1中获取WPF窗口的标题栏颜色?

来自分类Dev

如何在NSDocument的窗口标题栏中隐藏文件图标

来自分类Dev

在窗口标题和消息框中显示错误的语言:Win32应用程序,opengl

来自分类Dev

如何在Windows中获取窗口的默认标题栏高度?

来自分类Dev

如何在Android的标题栏中隐藏应用名称?

来自分类Dev

如何获得NSWindow标题栏的颜色,尤其是在窗口失去焦点时?

来自分类Dev

如何在外部Win32应用程序的窗口上添加WPF覆盖?

来自分类Dev

如何在UWP应用中隐藏/折叠标题栏?

来自分类Dev

如何在标题栏中向右扩展输入字段

来自分类Dev

如何使用Human-Clearlooks主题在窗口标题栏中获取正常的Ubuntu橙色?

来自分类Dev

如何在Ubuntu 18.04中将窗口菜单移至窗口标题栏?

来自分类Dev

如何使用Human-Clearlooks主题在窗口标题栏中获取正常的Ubuntu橙色?

来自分类Dev

如何在Ubuntu 18.04中将窗口菜单移至窗口标题栏?

来自分类Dev

如何在Windows 10中更改窗口标题栏大小

来自分类Dev

在窗口的标题栏中/上方添加UserControl

来自分类Dev

如何隐藏特定窗口的标题栏?

来自分类Dev

如何隐藏QDialog窗口的标题栏?

来自分类Dev

如何在不带标题栏的Openbox上拖动窗口?

来自分类Dev

如何在不触摸Ubuntu Touch标题栏的情况下移动窗口?

来自分类Dev

在窗口管理器的标题栏中更改字体的颜色和阴影

来自分类Dev

如何在html canvas中的文本周围绘制矩形?

来自分类Dev

如何在窗口标题栏上添加选项卡控件

来自分类Dev

如何使Xubuntu窗口标题栏透明?

来自分类Dev

如何在GNOME中更改活动窗口标题栏的颜色?

来自分类Dev

如何在 Ubuntu 18.04 中使窗口的标题栏透明?

来自分类Dev

如何在 20.04 中隐藏窗口标题栏?

Related 相关文章

  1. 1

    如何在Android中删除标题栏?

  2. 2

    在窗口的标题栏中/上方添加UserControl

  3. 3

    如何在OSX中更改NSWindow标题栏的颜色

  4. 4

    如何在Windows 8.1中获取WPF窗口的标题栏颜色?

  5. 5

    如何在NSDocument的窗口标题栏中隐藏文件图标

  6. 6

    在窗口标题和消息框中显示错误的语言:Win32应用程序,opengl

  7. 7

    如何在Windows中获取窗口的默认标题栏高度?

  8. 8

    如何在Android的标题栏中隐藏应用名称?

  9. 9

    如何获得NSWindow标题栏的颜色,尤其是在窗口失去焦点时?

  10. 10

    如何在外部Win32应用程序的窗口上添加WPF覆盖?

  11. 11

    如何在UWP应用中隐藏/折叠标题栏?

  12. 12

    如何在标题栏中向右扩展输入字段

  13. 13

    如何使用Human-Clearlooks主题在窗口标题栏中获取正常的Ubuntu橙色?

  14. 14

    如何在Ubuntu 18.04中将窗口菜单移至窗口标题栏?

  15. 15

    如何使用Human-Clearlooks主题在窗口标题栏中获取正常的Ubuntu橙色?

  16. 16

    如何在Ubuntu 18.04中将窗口菜单移至窗口标题栏?

  17. 17

    如何在Windows 10中更改窗口标题栏大小

  18. 18

    在窗口的标题栏中/上方添加UserControl

  19. 19

    如何隐藏特定窗口的标题栏?

  20. 20

    如何隐藏QDialog窗口的标题栏?

  21. 21

    如何在不带标题栏的Openbox上拖动窗口?

  22. 22

    如何在不触摸Ubuntu Touch标题栏的情况下移动窗口?

  23. 23

    在窗口管理器的标题栏中更改字体的颜色和阴影

  24. 24

    如何在html canvas中的文本周围绘制矩形?

  25. 25

    如何在窗口标题栏上添加选项卡控件

  26. 26

    如何使Xubuntu窗口标题栏透明?

  27. 27

    如何在GNOME中更改活动窗口标题栏的颜色?

  28. 28

    如何在 Ubuntu 18.04 中使窗口的标题栏透明?

  29. 29

    如何在 20.04 中隐藏窗口标题栏?

热门标签

归档