在单文档的客户去画线条格子,自定义菜单栏中设置参数设置行和列的参数
比如:原来我设置了10行10列,现在变成12行12列,显示没有问题,但在设置回10行10列就没反应了,我估计是窗口没有刷新造成的,改如何改正,
下面是view类void CBanyungongView::OnDraw(CDC* pDC)
{
CBanyungongDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if( pDC == NULL )
return;
int nCol = m_nWidth/CELL_WIDTH;
int nRow = m_nHeight/CELL_HEIGHT;
CPen pen(PS_SOLID,1,RGB(128,128,128));

CPen* pOld = pDC->SelectObject(&pen);

for( int i=1; i<nRow; i++ )
{
pDC->MoveTo(0,i*CELL_HEIGHT);
pDC->LineTo(m_nWidth,i*CELL_HEIGHT);
}

for( int j=1; j<nCol; j++ )
{
pDC->MoveTo(j*CELL_WIDTH,0);
pDC->LineTo(j*CELL_WIDTH,m_nHeight);
}

pDC->SelectObject(pOld);
pen.DeleteObject();
  }

解决方案 »

  1.   

    设置回10行10列之后 调用Invalidate(TRUE)
      

  2.   

    Invalidate(TRUE)
    RedrawWindow
    之类的函数把原来的图像刷新掉
      

  3.   

    自顶一下,我用的是Invalidate(FALSE)!没有引起窗口擦除?
      

  4.   

    void Invalidate(
       BOOL bErase = TRUE 
    );bEraseSpecifies whether the background within the update region is to be erased.
    (指定更新区域是否被擦除)
      

  5.   

    接着再问个问题?
    还是单文档中建立个对话框并显示出来,点击执行后对话框显示在客户区的规定坐标上,当我关闭整个窗口,再次点击执行后,对话框坐标没有变,但客户区的位置变了,我想实现对话框和客户区显示同步如何改写下面代码void CBanyungongView::OnShowWindow(BOOL bShow, UINT nStatus) 
    {
    CView::OnShowWindow(bShow, nStatus);

    if( bShow )
    {

    HINSTANCE hinst = AfxGetInstanceHandle();

    CBanyungongDoc* pDoc = GetDocument();

    }

    if( m_pDlgTool == NULL )
    {
    m_pDlgTool = new CToolBarDlg;
    m_pDlgTool->Create(IDD_DIALOG_TOOL,this);
    }

    if( m_pDlgTool != NULL )
    {
    m_pDlgTool->ShowWindow(bShow);
    //m_pDlgTool->SetWindowPos(&wndNoTopMost,rc.right-100,rc.top+20,0,0,SWP_NOSIZE |SWP_SHOWWINDOW);

    CRect rc(530,160,530+44,160+255);

    m_pDlgTool->MoveWindow(rc);

    }
    }
      

  6.   

    响应 WM_SIZE 和WM_MOVE  一个是大小改变 一个是位置改变 保存原大小 位置变了跟着移就是了
      

  7.   

    Invalidate(TRUE) 
    RedrawWindow 
    之类的函数把原来的图像刷新掉