我把窗体分割成两个窗口,在左边的窗体中我利用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);
}
}
}


}