1。不要在Show中调用SetScrollSize,他会引起刷新;
2。犯不着再GetDC(),OnDraw里的DC传过去不就行了吗?
2。犯不着再GetDC(),OnDraw里的DC传过去不就行了吗?
解决方案 »
- WinSocket的问题:Recv返回-1,WSAGetLastError 返回 0
- MFC中的MDI、SDI程序问题,怎么用这个模型啊?
- 如何直接根据数据库取出的BLOB数据调用DLLL?
- llm06(blacksheep)请进,
- 看来还是在DLL版块解决这个问题稳当些。
- listview的排序问题
- 求助,MFC 使用picture control显示图像出现问题。
- 我已经装了MSDN,如何才能不用MSDN的光盘就能看例子?
- 大家都来看看啊 小鸟求救
- 学VC半年了,好象渐渐有了点感觉,但……这个问题又让我一头醋!!!
- 有谁知道BoundsChecker6.2 for VC++的序列号或者BoundsChecker6.01软件的下载地址?
- 请问:关于制作平面三态下压按钮。
我也觉得奇怪,好象不能在OnDraw或OnPaint中加入改变CScrollView的size,它会引起很强烈的闪烁,倒是在别的地方改动就可以了.
应该自己来处理NCBKERASE的消息,而不应该由CScrollView来处理.
因为每次ON_Paint都产生NCBKERASE消息,而默认的处理方式
我认为应该是(我没有看到源码)
BOOL CYourView::OnErase(CDC *pDC)
{
//默认是这句
return (CScrollView::OnErase);
}事实上最终调用的可能是
CRect rect;
GetClientRect(&rect);
rect.left=0;
rect.top=0;
return (pDC->FillSolidRect(&rect,RGB(255,255,255)));//就是白色了
//也正是这几句影响很大
因此只要自己接管背景的重绘就能很大程度地改善闪烁问题
把它放到初始化的初始化的函数中。
我同意!
To:dusj
这是一个performance可以改进的地方,但和提出的问题无关。
To:ab
"取得真正需要画的区域"应该用GetUpdateRect().