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

什么是失效,更新方法在VC中做什么?++

  •  6
  • Naruto  · 技术社区  · 15 年前

    对于C++中的窗口函数,我有点怀疑。 究竟是什么 "invalidate()" 功能如何? 它发送什么消息?我们什么时候需要打这个电话?还有什么是 "update()" 功能? 是 "invalidaterect()" 类似于 “无效”() 功能?.

    谢谢

    2 回复  |  直到 15 年前
        1
  •  6
  •   Thomas    15 年前

    CWnd::Invalidate() 使窗口的整个工作区失效,这表示该区域已过期,应重新绘制。您通常会在需要重新绘制的控件上调用此函数。 CWnd::InvalidateRect() 仅使窗口的一部分无效。

    Invalidate 函数 WM_PAINT 将发布消息[ 不完全正确;见评论 ]到消息队列,并在将来的某个时间处理。 CWnd::UpdateWindow() 发送 水彩画 消息,导致立即重新绘制无效区域。

    真的,这些都在文档中。

        2
  •  1
  •   wich    15 年前

    “无效”功能将绘图区域标记为“无效”。此标志在窗口重新绘制时使用,如果该区域无效,它将重新绘制该区域,否则它将离开屏幕区域。invalidate使给定对象的整个客户机区域失效,invalidrect使客户机区域的特定区域失效。更新函数执行实际重绘。

    这样一种机制的原因,而不仅仅是当你知道要改变什么东西时立即绘制,是因为你可以防止多次重画,比如说你一次收到三条向下键的信息,这些信息会滚动一些文本区域。如果为每个按键重新绘制文本区域,则必须绘制文本区域三次,应用程序将无响应。相反,通过处理所有键事件、更新附加到文本区域的数据结构以及在重绘文本区域之前使文本区域无效,您只重绘一次文本区域。