当窗口失去对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);
        RedrawWindow(hWnd,&rect,(HRGN)wParam,RDW_UPDATENOW)
    }break;

这可以解决问题,在上述情况下,我的窗口周围绘制了一个红色矩形。但是,如果窗口失去焦点,则会绘制默认的非客户区域,而我的自定义非客户区域图形也会消失。

我尝试在窗口的回调函数中捕获消息WM_KILLFOCUS,并与使用WM_NCPAINT进行相同的操作,但是它没有执行任何操作(尽管我看到我在按下另一个窗口时收到此消息,并且窗口失去焦点) 。

我在这里想念什么...?

焦点

为添加处理程序WM_NCACTIVATE

case WM_NCACTIVATE:
    // Paint the non-client area now, otherwise Windows will paint its own
    RedrawWindow(hWnd, NULL, NULL, RDW_UPDATENOW);
    break;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从super()运行方法时,为什么字段未初始化为非默认值?

来自分类Dev

Win32窗口未显示

来自分类Dev

为什么我的argparse不显示默认值?

来自分类Dev

更好地控制我的客户区域(WIN32)

来自分类Dev

为什么在访问结构时需要默认值?

来自分类Dev

使用:=时,为什么with = TRUE是默认值?

来自分类Dev

在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

来自分类Dev

在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

来自分类Dev

为什么单击编辑框关闭Win32窗口(C ++)?

来自分类Dev

在win32 MDI区域中显示QWidget

来自分类Dev

为什么多次调用该函数时会覆盖为Python 3函数设置的默认值?

来自分类Dev

Python:为什么动态添加的__repr__方法不会覆盖默认值

来自分类Dev

为什么需要默认值呢?

来自分类Dev

为什么nullglob不是默认值?

来自分类Dev

更新win32窗口以显示生成的条形码

来自分类Dev

当我使用参数调用Win32函数时,为什么GCC使用帧指针?

来自分类Dev

为什么在用Win32 GDI绘图时需要将句柄保存到旧的位图?

来自分类Dev

为什么在用Win32 GDI绘图时需要将句柄保存到旧的位图?

来自分类Dev

当窗口失去焦点时,为什么此NSMenuItem被禁用?

来自分类Dev

当StoreGeneratedPattern =计算时,覆盖实体框架中的默认值

来自分类Dev

为什么 switch 语句在这个 C 计算器中显示默认值?

来自分类Dev

清除输入,模糊时显示文本区域,如果该字段为空,则为默认值

来自分类Dev

为什么在使用||时使用“意外的“。”” 括号中默认值的运算符

来自分类Dev

使用G1收集器时,为什么-XX:+ ExplicitGCInvokesConcurrent不是默认值?

来自分类Dev

创建Postgresql表时,为什么出现“多个默认值”错误?

来自分类Dev

为什么在SSRS 2012中允许为null时无法使用默认值

来自分类Dev

为什么Win32没有僵尸线程问题?

来自分类Dev

为什么我的win32程序需要提升?

来自分类Dev

为什么Win32没有僵尸线程问题?

Related 相关文章

  1. 1

    从super()运行方法时,为什么字段未初始化为非默认值?

  2. 2

    Win32窗口未显示

  3. 3

    为什么我的argparse不显示默认值?

  4. 4

    更好地控制我的客户区域(WIN32)

  5. 5

    为什么在访问结构时需要默认值?

  6. 6

    使用:=时,为什么with = TRUE是默认值?

  7. 7

    在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

  8. 8

    在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

  9. 9

    为什么单击编辑框关闭Win32窗口(C ++)?

  10. 10

    在win32 MDI区域中显示QWidget

  11. 11

    为什么多次调用该函数时会覆盖为Python 3函数设置的默认值?

  12. 12

    Python:为什么动态添加的__repr__方法不会覆盖默认值

  13. 13

    为什么需要默认值呢?

  14. 14

    为什么nullglob不是默认值?

  15. 15

    更新win32窗口以显示生成的条形码

  16. 16

    当我使用参数调用Win32函数时,为什么GCC使用帧指针?

  17. 17

    为什么在用Win32 GDI绘图时需要将句柄保存到旧的位图?

  18. 18

    为什么在用Win32 GDI绘图时需要将句柄保存到旧的位图?

  19. 19

    当窗口失去焦点时,为什么此NSMenuItem被禁用?

  20. 20

    当StoreGeneratedPattern =计算时,覆盖实体框架中的默认值

  21. 21

    为什么 switch 语句在这个 C 计算器中显示默认值?

  22. 22

    清除输入,模糊时显示文本区域,如果该字段为空,则为默认值

  23. 23

    为什么在使用||时使用“意外的“。”” 括号中默认值的运算符

  24. 24

    使用G1收集器时,为什么-XX:+ ExplicitGCInvokesConcurrent不是默认值?

  25. 25

    创建Postgresql表时,为什么出现“多个默认值”错误?

  26. 26

    为什么在SSRS 2012中允许为null时无法使用默认值

  27. 27

    为什么Win32没有僵尸线程问题?

  28. 28

    为什么我的win32程序需要提升?

  29. 29

    为什么Win32没有僵尸线程问题?

热门标签

归档