//建立一个单文档界面,最后一项选择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);
//在滑动块滑动时,一定会让显示出来的字消失
//不过滑动块滑动时,一定会使窗体重画,好像调用什么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);
}
要想达到窗体重画,OnDraw,OnPaint,必须重载一个
如果是view,建议在OnDraw中处理
Cwnd 中的函数Redraw(BOOL),当设置为FALSE时不会改变
这样重画的话,不重载ondraw肯定消失的
//在OnLButtonUp()中加入如下代码 <<<<---------- 绘图的地方不正确
View 类型,应在 OnDraw 中绘图,这样在系统发出任何绘图消息时才会调用 OnDraw 重绘
你可以这样:
加入一个变量 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++;
}
}
这样在你其它的情况下字就不会消失了
while (i<5000)
{
dc.TextOut(0,i*15,"aaaa");
i++;
}
void CSdiView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
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++ ;
}
}
这样就不会再消失了