【问题标题】:MFC, c++ When showing and hiding ctrls on the screen can I disable paint for a bitMFC,c ++在屏幕上显示和隐藏ctrls时,我可以暂时禁用绘画吗
【发布时间】:2008-11-17 21:35:57
【问题描述】:

我有一个屏幕,上面有 20 个控件。 我想展示全部二十个,然后只隐藏那些与我正在做的事情无关的。

psudoCode.
for each element 
    show element 

for each element in hide list
    hide element.

我的问题是屏幕绘制的循环之间。它看起来非常难看。
我知道我已经看到了这一点,但在我的一生中我找不到那个代码,甚至不记得我在哪个应用程序中看到了那个代码..

有谁知道如何让油漆暂停一下?

【问题讨论】:

  • 你在调用什么函数来隐藏 ctrl/window?

标签: c++ mfc onpaint suspend


【解决方案1】:

正如不久前有人建议我,使用 CWnd::SetRedraw

wnd.SetRedraw(FALSE)
... // do your stuff with elements
wnd.SetRedraw(TRUE)

【讨论】:

  • 对于显示/隐藏的每个控件都必须调用它。
  • 你确定必须为每个控件调用吗?
  • 如果你隐藏窗口,它不应该参与绘制过程,除非有其他东西使窗口无效或向它发送 WM_Paint 消息。
  • 我收回这一点 - 看来,当在对话框上调用时,SetRedraw(FALSE) 将阻止所有子元素的绘制,直到调用 SetRedraw(TRUE)。
  • 是的。这很常见。在 wx 中,这被称为冻结/解冻,它对孩子也是递归的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2014-01-23
相关资源
最近更新 更多