15,976
社区成员
发帖
与我相关
我的任务
分享


问题解决了,是 OnNcPaint 里面的处理出了问题
我对照了 win7 和 xp 中的代码,发现 xp 里没有处理边框,所以没有调用 OnNcPaint,也就没有发生闪烁的现象
而导致闪烁的根本问题,是在 OnNcPaint 里面获得的窗口坐标没处理好导致的void CSanStatusBar::OnPaint()
{
static int nIndex = 0;
TRACE1("%04d: Painting client area.\n", ++nIndex);
CRect rect;
GetClientRect(&rect);
CPaintDC dc(this);
CClientDC dc2(this);
DrawBackground(&dc2, &rect);
}
上面是 OnPaint 的代码,DrawBackground 里面其实就一句代码,画背景的
现在加了个 CClientDC 上去,然后用 CClientDC 来绘图
画面会非常快的闪烁了一下(肉眼很难看到,不排除后期内容多了会看得清楚这个闪烁),后面没遮挡的部分也画上了