在单文本框里画了图(用双缓存已解决闪烁和重绘问题),又新建了个按钮。我主要做的是TCP服务器端,现在我给服务器发数据时,速度发快了后,图形不闪烁,但按钮闪烁很厉害,求解.......
int CMyview1::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; m_btn1.Create("远程操作",WS_VISIBLE | BS_DEFPUSHBUTTON, CRect(0,0,90,40),this,IDC_MYBUTTON);//创建按钮 return 0;
}
请问闪烁原因?如何解决?如果要把上述代码写进双缓存,如何写?
谢谢大家了!
int CMyview1::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; m_btn1.Create("远程操作",WS_VISIBLE | BS_DEFPUSHBUTTON, CRect(0,0,90,40),this,IDC_MYBUTTON);//创建按钮 return 0;
}
请问闪烁原因?如何解决?如果要把上述代码写进双缓存,如何写?
谢谢大家了!
解决方案 »
- 给VC2008打完SP1补丁后,出现了各种“BUG”
- 求教:用VC怎样才能做图形报表(希望给一点思路)
- 关于内存分配的错误!UP有分!
- crystal 发布时的注册问题
- 为什么我用MFC扩展DLL导出一个CTreeCtrl的派生类。DEBUG好好的,RELEASE运行后Tree上的滚动条就拉不动了??
- 调用CalculateCRC用那个头文件?
- 巨难的ADO问题,请CSDN的高手帮忙,已经加到200分了?(up有分)
- 多线程对可以对同一个全局Recordset对象进行查询操作吗?
- 急急急!谁有编写过图形CAD软件的经验?请指条明路
- 大家晚上好,我想在程序一开始的时候就从一个文本文件中读取数据该怎么办?环境是mfc 我知道这个问题很菜,但是一定给分
- vc群
- 再次提问 如何让窗口置底?
InvlidateRect()重新计算你的刷新区域,将Button区域排除在外
InvlidateRect()重新计算你的刷新区域,将Button区域排除……
[/Quote]
哦,没有覆盖的,button在绘制的图的上方
还有请问你说的InvlidateRect()是不是打错了?怎么百度不到啊?怎么用这个函数啊?
CONST RECT* lpRect, // rectangle coordinates
BOOL bErase // erase state);InvalidateRect();就是指定你将要刷新的区域,看第二个参数
m_btn1.GetWindowRect(&rect); // 屏幕坐标表示的rect
ScreenToClient(&rect); // 映射到当前客户区下面可以创建CRgn了,然后从client的rgn中扣除,再调用CDC::SelectClipRgn
这个函数里吗?
方法二、在任何需要的地方调用InvalidateRgn更新rgn
方法一中,在OnDraw里我用的双缓存,再调用CDC::SelectClipRgn,可以吗?还有去哪里写CDC::SelectClipRgn这个函数啊?
方法二中,什么叫需要的地方?怎么更新rgn哦?
也许我问的问题对你来说很简单,但对我来说不好理解哈,谢谢回答了。因为你们说的这些还是让我无从下手....