解决方案 »

  1.   

    Invalidate(FALSE); 的作用是使图片消失吗?
      

  2.   

    不是啊,那个是不擦除背景画图,true是擦除背景画图,我这里画图是根据坐标画的,UNUSE的不画
      

  3.   

    在 Invalidate(FALSE); 后面加上 UpdateWindow(); 试试。
      

  4.   

    用InvalidateRect来重绘指定区域试试
      

  5.   

    我现在改完之后的代码是这样的,不知为啥他这回变成只提示一次而且反复提示那一对(尽管已经消没了还在空地上画线),而且还一定是挨着的一对,谁能帮我看看,一定是我函数的问题只是我改不过来了void CLLKanGameDlg::Tips(){ bool find = false; int curPos = UNUSE; int Num = (MAP_LINE*MAP_ROW);
    for (; curPos < Num; curPos++,tipj++){
    if ((tipi != UNUSE) && (curPos != tipi) && (m_map[curPos] == m_map[tipi]) && ConnectOK(tipi,curPos) && (find == false)){ //int posX = tipj*FRAME_WIDTH + MAIN_OFFSET; //要画的位置的横坐标
    //int posY = tipj*FRAME_HIGHT + MAIN_OFFSET; //要画的位置的纵坐标 //int curX = posX-MAIN_OFFSET;
    //int curY = posY-MAIN_OFFSET;
    //int borderX = (curX-curX%FRAME_WIDTH)+MAIN_OFFSET;
    //int borderY = (curY-curY%FRAME_HIGHT)+MAIN_OFFSET; //CClientDC dc(this);
    //CPen borderPen(PS_SOLID,4,RGB(255,0,0));
    //CPen *pOldPen = dc.SelectObject(&borderPen); //dc.MoveTo(borderX+DRAW_OFFSET,borderY+DRAW_OFFSET+1); //画红框框
    //dc.LineTo(borderX+DRAW_OFFSET,borderY-DRAW_OFFSET+FRAME_HIGHT-4);
    //dc.LineTo(borderX-DRAW_OFFSET+FRAME_WIDTH-4,borderY-DRAW_OFFSET+FRAME_HIGHT-4);
    //dc.LineTo(borderX-DRAW_OFFSET+FRAME_WIDTH-4,borderY+DRAW_OFFSET);
    //dc.LineTo(borderX+DRAW_OFFSET,borderY+DRAW_OFFSET+1); DrawConnectLine(tipi,curPos); m_map[curPos] = UNUSE;
    m_map[tipi] = UNUSE; tempMap[curPos / MAP_LINE + 1][curPos % MAP_LINE + 1] = UNUSE;
    tempMap[tipi / MAP_LINE + 1][tipi % MAP_LINE + 1] = UNUSE; tipi = UNUSE;
    find = true;
    Sleep(100);
    Invalidate(FALSE);
    InvalidateRect(NULL, false); UpdateWindow();
    }
    tipi = curPos;
    }
    }