非常感谢你们的帮助,这几天困扰着我。
我正在使用Windows Vista,并使用直接Windows API(无MFC)在C ++中编写程序。
当我调整窗口大小时,菜单项会闪烁。我的窗口类不使用CS_HREDRAW或CS_VREDRAW。我对CLIENT AREA使用双缓冲,因此客户区不闪烁,只有非客户区域的菜单。
现在我可以通过自己处理WM_NCPAINT来解决这个问题,但我真的不想处理非客户区域的所有绘图。我也处理WM_ERASEBKGND,但这也只对CLIENT AREA有帮助。我真的不知道如何解决这个问题。我已经广泛搜索谷歌,并阅读并尝试了一切
http://catch22.net/tuts/flicker
建议。再次感谢你们。我希望你能帮我理解为什么我的菜单项会闪烁(虽然不是菜单栏,也不是边框,也不是窗口标题栏)。
答案 0 :(得分:2)
我很高兴地说我解决了这个问题!我只需使用CreateWindowEx()将WS_EX_COMPOSITED传递给使用菜单栏创建窗口!效果很好,还可以照顾儿童窗户的闪烁。我以为我会和你们分享这些,以防万一你遇到同样烦人的闪烁。