//建立一个单文档界面,最后一项选择CScrollView
//在OnlintialUpdate()中加入如下代码
CScrollView::OnInitialUpdate();
CSize sizeTotal(0, 5000); // 20 by 30 cm
CSize sizePage(sizeTotal.cx / 2, sizeTotal.cy / 2);
CSize sizeLine(sizeTotal.cx / 50, sizeTotal.cy / 50);
SetScrollSizes(MM_TEXT, sizeTotal, sizePage, sizeLine);
//在OnLButtonUp()中加入如下代码
CClientDC dc(this);
int i=0;
while (i<5000)
{
dc.TextOut(0,i*15,"aaaa");
i++;
}
// m_rectEllipse(0,0,1000,1000);
CRect rectDevice = m_rectEllipse;
InvalidateRect(rectDevice);
//在滑动块滑动时,一定会让显示出来的字消失(因为我在OnDraw()中没有任何处理)
//不过滑动块滑动时,一定会使窗体重画,好像调用什么paint()函数
//可我又不想在其它函数中写代码,
//请问,如何滑动块滑动时显示的字不消失?
//在OnlintialUpdate()中加入如下代码
CScrollView::OnInitialUpdate();
CSize sizeTotal(0, 5000); // 20 by 30 cm
CSize sizePage(sizeTotal.cx / 2, sizeTotal.cy / 2);
CSize sizeLine(sizeTotal.cx / 50, sizeTotal.cy / 50);
SetScrollSizes(MM_TEXT, sizeTotal, sizePage, sizeLine);
//在OnLButtonUp()中加入如下代码
CClientDC dc(this);
int i=0;
while (i<5000)
{
dc.TextOut(0,i*15,"aaaa");
i++;
}
// m_rectEllipse(0,0,1000,1000);
CRect rectDevice = m_rectEllipse;
InvalidateRect(rectDevice);
//在滑动块滑动时,一定会让显示出来的字消失(因为我在OnDraw()中没有任何处理)
//不过滑动块滑动时,一定会使窗体重画,好像调用什么paint()函数
//可我又不想在其它函数中写代码,
//请问,如何滑动块滑动时显示的字不消失?
CSize sizeTotal(0, 5000); // 20 by 30 cm================
试试CSize sizeTotal(5000, 5000); // 20 by 30 cm
避免闪烁的代码有几十行void CSdiView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CDC * pDC = GetDC();
StringData += nChar;
CRect r(0,0,0,0);
pDC->DrawText(StringData,&r,DT_LEFT|DT_CALCRECT);
InvalidateRect(r);
CView::OnChar(nChar, nRepCnt, nFlags);
}
void CSdiView::OnDraw(CDC* pDC)
{
pDC->DrawText(StringData,CRect(0,0,1000,1000),DT_LEFT);
}
你可以这样:
加入一个变量 BOOL bLButtonDown在 OnLButtonUp 中对其赋值{
bLButtonDown = FALSE;
InValidate();
}在 OnLButtonDown 中
{
bLButtonDown = TRUE;
Invalidate();
}
在OnDraw中加入{
if( lButtonDown == FALSE )
while(int i<5000)
{
dc.TextOut(0,i*15,"aaaa");
i++;
}
}这样在你其它的情况下字就不会消失了
{
dc.TextOut(0,i*15,"aaaa");
i++;
}
{
StringData += nChar;
Invalidate();
CView::OnChar(nChar, nRepCnt, nFlags);
}
void CSdiView::OnDraw(CDC* pDC)
{
pDC->Textout(0,0,StringData);
}
你绘图的地方不对你做一个变量 BOOL bLButtonUp在 OnLButtonUp 中bLButtonUp = TRUE;
在 OnDraw 中加入 if( bLButtonUp )
{ while( i < 5000 )
{
dc.TextOut(.......);
i++ ;
}}这样就不会再消失了
// 被OnDraw的pDC->DrawText触发这个事件
void CSdiView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
CDC * pDC = GetDC();
StringData += nChar;
CRect r(0,0,0,0);
pDC->DrawText(StringData,&r,DT_LEFT|DT_CALCRECT);
InvalidateRect(r); // 减少闪烁
CView::OnChar(nChar, nRepCnt, nFlags);
}
// 窗口重画的时候调用这个函数
void CSdiView::OnDraw(CDC* pDC)
{ pDC->DrawText(StringData,CRect(0,0,1000,1000),DT_LEFT);
}
ondraw()就会,从画,用INVALIDATERECT
yao shua xin
WM——paint;