代码之家  ›  专栏  ›  技术社区  ›  lovespring

如何使窗口的背景无效,而不是工作区的任何像素?

  •  -2
  • lovespring  · 技术社区  · 15 年前

    只想重新粉刷背景,而不是客户区的任何部分。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Chris Becke    15 年前

    你不能。背景画在窗户的子区域。如果窗口使用子控件绘制对象(在其工作区中),则可以使用WS_CLIPCHILDREN样式确保父窗口的背景绘制不会过度绘制任何子窗口。

    您只需要在父窗口上绘制相关区域,但是,任何invalidatenstruct类型调用都将导致重新绘制任何重叠的子窗口。

        2
  •  0
  •   Adrian Fâciu    15 年前

    试试看 WM_ERASEBKGND .

    例子:

     HDC hDC = GetDCEx(hWnd, NULL, DCX_CLIPCHILDREN | DCX_CACHE);
     SendMessage(WM_ERASEBKGND, (WPARAM)hDC, 0);
    
        3
  •  0
  •   Moo-Juice    15 年前

    当你说 不是客户端的像素 “区域,我想你想使 非客户 区域?如果是,请尝试使用 SetWindowPos() 功能 SWP_NOMOVE | SWP_NOSIZE | SWP_DRAWFRAME 旗帜。