300元钱求解“带有背景位图的编辑框滚动闪烁问题”
一个带有背景位图和滚动条的编辑框,点击滚动条实现了文字滚动(位图不滚动)。但有缺陷,在滚动时(特别是单行滚动时),位图有闪动。怎样解决此闪烁现象?
备有压缩文件(全部源代码与资源文件)。告知Email索取。
解答、提供源代码(或改正的)均可。付款方式:电汇(最好是建行龙卡)等。主要代码如下:// bEdit.h : header file
public:
CBrush m_brush ;
BOOL bFirst;
CBitmap m_bitmap,*oldBmp;
CDC memDC;// bEdit.cpp : implementation fileCbEdit::CbEdit()
{
bFirst=TRUE; // 首次背景刷新标记。
m_bitmap.LoadBitmap(IDB_BITMAP1); // IDB_BITMAP1为256色bmp位图。
COLORREF m_clrBack ;
m_clrBack=RGB (0 , 0 , 255);
m_brush.CreateSolidBrush(m_clrBack );}CbEdit::~CbEdit()
{
}BOOL CbEdit::OnEraseBkgnd(CDC* pDC)
{
CRect re;
GetClientRect(&re);//得到Edit控件的外框,即背景区域
if(bFirst){
memDC.CreateCompatibleDC(pDC);
oldBmp=memDC.SelectObject(&m_bitmap);
m_bitmap.DeleteObject();
bFirst=FALSE;
}
pDC->BitBlt(0,0,re.Width(),re.Height(),&memDC,0,0,SRCCOPY);
pDC->SelectObject(oldBmp);
return TRUE;
}HBRUSH CbEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);
return m_brush;
}void CbEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
Invalidate();
CEdit::OnLButtonDown(nFlags, point);
}void CbEdit::OnVscroll()
{
Invalidate();
}void CbEdit::OnChange()
{
Invalidate();
}
一个带有背景位图和滚动条的编辑框,点击滚动条实现了文字滚动(位图不滚动)。但有缺陷,在滚动时(特别是单行滚动时),位图有闪动。怎样解决此闪烁现象?
备有压缩文件(全部源代码与资源文件)。告知Email索取。
解答、提供源代码(或改正的)均可。付款方式:电汇(最好是建行龙卡)等。主要代码如下:// bEdit.h : header file
public:
CBrush m_brush ;
BOOL bFirst;
CBitmap m_bitmap,*oldBmp;
CDC memDC;// bEdit.cpp : implementation fileCbEdit::CbEdit()
{
bFirst=TRUE; // 首次背景刷新标记。
m_bitmap.LoadBitmap(IDB_BITMAP1); // IDB_BITMAP1为256色bmp位图。
COLORREF m_clrBack ;
m_clrBack=RGB (0 , 0 , 255);
m_brush.CreateSolidBrush(m_clrBack );}CbEdit::~CbEdit()
{
}BOOL CbEdit::OnEraseBkgnd(CDC* pDC)
{
CRect re;
GetClientRect(&re);//得到Edit控件的外框,即背景区域
if(bFirst){
memDC.CreateCompatibleDC(pDC);
oldBmp=memDC.SelectObject(&m_bitmap);
m_bitmap.DeleteObject();
bFirst=FALSE;
}
pDC->BitBlt(0,0,re.Width(),re.Height(),&memDC,0,0,SRCCOPY);
pDC->SelectObject(oldBmp);
return TRUE;
}HBRUSH CbEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
pDC->SetBkMode(TRANSPARENT);
return m_brush;
}void CbEdit::OnLButtonDown(UINT nFlags, CPoint point)
{
Invalidate();
CEdit::OnLButtonDown(nFlags, point);
}void CbEdit::OnVscroll()
{
Invalidate();
}void CbEdit::OnChange()
{
Invalidate();
}
我的信箱:[email protected]
BOOL CbEdit::OnEraseBkgnd(CDC* pDC)
{
CRect re;
GetClientRect(&re);//得到Edit控件的外框,即背景区域
memDC.CreateCompatibleDC(pDC);
oldBmp=memDC.SelectObject(&m_bitmap);
pDC->BitBlt(0,0,re.Width(),re.Height(),&memDC,0,0,SRCCOPY);
pDC->SelectObject(oldBmp); return FALSE;//修改为FALSE
}CbEdit::~CbEdit()
{
m_bitmap.DeleteObject();//和其它的一些后期消除代码
}
{
CRect re;
GetClientRect(&re);//得到Edit控件的外框,即背景区域
if(bFirst){
memDC.CreateCompatibleDC(pDC);
oldBmp=memDC.SelectObject(&m_bitmap);
bFirst=FALSE;
pDC->BitBlt(0,0,re.Width(),re.Height(),&memDC,0,0,SRCCOPY);
memDC.SelectObject(oldBmp);
memDC.DeleteDC()
}
else pDC->BitBlt(0,0,re.Width(),re.Height(),&memDC,0,0,SRCCOPY); return TRUE;
}
CbEdit::~CbEdit()
{
m_bitmap.DeleteObject();
}
我搞不定,兄弟,不好意思,能力有限,没办法帮你
[email protected]给我代码。
[email protected]
[email protected]
{
CRect re;
GetClientRect(&re);//得到Edit控件的外框,即背景区域
memDC.CreateCompatibleDC(pDC);
oldBmp=memDC.SelectObject(&m_bitmap);
pDC->StretchBlt(0,0,re.Width(),re.Height(),&memDC,0,0, 48, 48, SRCCOPY);
memDC.SelectObject(oldBmp);
memDC.DeleteDC();
return TRUE;
}CbEdit::~CbEdit()
{
m_bitmap.DeleteObject();
}void CbEdit::OnVscroll()
{
CEdit::OnVScroll(nSBCode, nPos, pScrollBar);
Invalidate();
}
问题好象不在OnEraseBkgnd()中。
谢谢,你用的这个消息我也试过,还是那样,问题并没有得到解决。
void CbEdit::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
//Invalidate(); //版本1,在此位置使用该函数。
CEdit::OnVScroll(nSBCode, nPos, pScrollBar);
Invalidate(); //版本2,在此位置使用该函数。}
声明一下,奖金只能给问题的最终解决者,不支解,不好意思!只好给你分数了。
luogucai(萝卜) 文件已发出,请查收。
皮肤工作室皮肤类(VC开发企业版)暑假期间正在热销中,优惠活动截至到2003.9月。售价仅仅人民币500元整(终身使用版权);并且,在功能上可以任意扩展,真可谓手到擒来。具体包括皮肤对话框,皮肤按扭,皮肤进度条,皮肤控制条,皮肤动画标签类,皮肤面版类... 全部功能都以源代码的方式出售,使你可以制作真正意义上的具有自主版权皮肤功能的软件,还在等什么,赶快行动吧!!!
真正令我们心动的时刻到了,同时随送的一些经典皮肤示例源代码包括多彩取色机XP,鼠标记录机,多彩影音伴侣等等
你如果希望购买我们的产品,请到我们网站的购买方式页面 http://www.skin-studio.com/bankcard.htm了解更多信息
你的皮肤类,有我要的这个编辑框吗(即编辑框背景是位图,垂直滚动条滚动时,背景不动,文字滚动)?不要我买回来,没有所要的东西,我只想要这个功能。
请发一份给我, 我不信是不可能解决的问题!
[email protected]
[email protected]
给我也发 一份。
[email protected] 请您尽快发来。非常感谢!
[email protected]
“对于与屏幕相关联的DC句丙,第n屏图像与第n+1屏图之间有且只有一次贴图操作”
谢谢!已收到,并已回复,但问题没有解决。 所有索要源码的朋友,源码文件均已发出。若没收到,请与我联系。[email protected]
此问题不是动画闪烁,好象与多缓冲无关,现在是背景图有跳动,目的是要背景图不动,好象与scrollwindow函数有关系。
已收到,但是附件不能打开,请您尽快再发一次。 taotao4629(pirate):
已收到,但滚动条已经失效,失去应用意义,需要您完善。
qfly() :
已收到,但是附件不能打开,请您尽快再发一次。taotao4629(pirate):
已收到,背景是不闪了,但滚动条失效,失去了应用意义,需要完善。
不好意思,让您辛苦了,您的程序仍有缺陷。我给您一份qfly()发来的程序(执行文件)。 非常感谢二位及各位朋友的关心!
{
// TODO: Add your message handler code here and/or call default
CEdit::OnVScroll(nSBCode, nPos, pScrollBar);
Invalidate();
}
DeautyFan(悲情浪子)
luogucai(萝卜) 三位请收取答复邮件。