2009-01-09 95 views
1

非常感谢你们的帮助,这让我困扰了几天。菜单项闪烁调整大小

我正在使用Windows Vista,并使用直接Windows API(不使用MFC)在C++中编写我的程序。

当我调整窗口大小时,菜单项闪烁。我的窗口类不使用CS_HREDRAW或CS_VREDRAW。我为CLIENT AREA使用双缓冲,所以客户区不闪烁,只有非客户区的菜单。

现在我可以通过自己处理WM_NCPAINT来解决这个问题,但我真的不想处理非客户区的所有绘图。我也处理WM_ERASEBKGND,但这只对CLIENT AREA有帮助。我对如何解决这个问题感到非常失望。我已搜查谷歌广泛,并且已经阅读并尝试了一切

http://catch22.net/tuts/flicker

已建议。再次感谢你们。我希望你能帮助我理解为什么我的菜单项闪烁(尽管不是菜单栏,也不是边框,也不是窗口标题栏)。

回答

2

我很高兴地说我解决了这个问题!我只需将WS_EX_COMPOSITED传递给用菜单栏创建窗口,使用CreateWindowEx()!效果很好,同时也照顾儿童窗户的闪烁。以为我会和大家分享一下,以防万一你遇到同样烦人的闪烁。