在文档/视图结构中的滚动条的设置

lhzsu 2009-08-25 08:17:54
我把窗体分割成两个窗口,在左边的窗体中我利用UpdateAllViews(this,0,0)向右边的窗体发消息,在右边的窗体中的OnUpdate()函数中利用一个全局变量,使得每收到一个消息就生成一个矩形,每一个程序大约都要生成20多个矩形,所以我安装上滚动条,但就是控制不了,现象是:画出的矩形只在一屏上显示(因为矩形比较大,只能显示2.5个左右),当用滚动条移动时,移出屏幕后再移回来就会消失.

下面是两个函数中的代码: 其中m_iStepCount , m_iChess[9]是左边窗体传过来的全局变量.
void CMMMMViewRight::OnInitialUpdate()
{
CScrollView::OnInitialUpdate();


SIZE size={3000,1500};
SetScrollSizes(MM_TEXT,size);

// TODO: Add your specialized code here and/or call the base class

}

void CMMMMViewRight::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
// TODO: Add your specialized code here and/or call the base class

RECT rect;
CClientDC dc(this);
CString ch[2];
int tcount=0;


for (int i = 0 ; i < 3 ; i ++)
{
for (int j = 0 ; j < 3 ; j ++)
{
SetRect(&rect , 115, 10+ m_iStepCount*160, 155 , 50+ m_iStepCount*160);
OffsetRect(&rect , i * 40 , j * 40 );
dc.Rectangle(rect.left , rect.top , rect.right , rect.bottom);
}
}


for (int m = 0 ; m< 3 ; m ++)
{
for ( int n = 0 ; n < 3 ; n ++)
{
//int t = m_iChess[9];
int t = m_iChess[tcount++];
rect.left = n * 40;
rect.top = m * 40;
rect.right = rect.left + 15;
rect.bottom = rect.top + 15;
OffsetRect(&rect , 12+115 , 12+10+ m_iStepCount*160 );
if (t != 0 )
{
//因为t是整数,现在加上一个字符,则整体为一个字符即ch[0]=t,ch[1]=0;
ch[0]=t+'0';
dc.DrawText(ch[0],&rect,DT_CENTER);
//不能写成这个样子:这是SDK写的,DrawText("AA", &rect3,DT_CENTER);
}
else
{
ch[0] = ch[1] = ' ';
dc.DrawText(ch[0],&rect,DT_CENTER);
}
}
}


}
...全文
97 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lhzsu 2009-08-25
OnPaint可以接收UpdateAllViews(this,0,0)的消息吗
  • 打赏
  • 举报
回复
dayong576 2009-08-25
在OnPaint里面画
  • 打赏
  • 举报
回复
发帖
VC/MFC

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
帖子事件
创建了帖子
2009-08-25 08:17
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……