本帖最后由 xyzhaopeng 于 2011-11-04 10:33:39 编辑

解决方案 »

  1.   

    if(!start)
    改成
    if(start)
      

  2.   

    首先你得On32773函数虽然改了start得值,但并没有激发重绘,自然不会调用OnDraw
    其次,代码太垃圾了......
      

  3.   

    你得block1.DrawJiemian(pDC);干了什么呢?
      

  4.   

    代码垃圾是正常。我新手。请多多指教。
    我也想激发重绘,但是我试着在on32773函数里调用OnDraw函数,却老是报错,获得的DC估计是桌面的。没画到
    客户区,画到了电脑桌面的响应坐标处。
    高人,求指教
      

  5.   

    想让它画界面,但是没画。
    else前面的是画主画面,已经成功
      

  6.   

    在start=TRUE之后,调用Invalidate()
      

  7.   

    void Block::DrawJiemian(CDC *pDC)
    {
    CBrush brush(&jiemian);
    CClientDC dc(this);
    dc.FillRect(CRect(0,0,368,438),&brush);
    }
    对了,这函数也贴出来
      

  8.   

    明明参数中有pDC,你为啥总自己定义一个dc呢?pDC是窗口的DC,你自己定义的dc又是哪个?
      

  9.   

    你这样画当然是在左上角
    应该用GetClientRect获取rect
    另外应该直接用pDC
      

  10.   

    哎,刚看了几集孙鑫的视频就开始编俄罗斯方块了,让高人见笑了,果然是这个问题。
    我直接用pDC来画就正常了。能教我这是为什么吗?
    谢谢高人啊 
      

  11.   

    这个DC是绘图设备上下文,简单说就是你到底要画到哪里去。pDC是视图的DC,显然是你需要画图的地方。block只是你得一个模块罢了,本身并不具备窗口区,只是一个实体封装类。
      

  12.   

    有点明白了。谢谢你啊。
    代码改成这样了:
    if(!start)
    {
    CBrush brush(&huamian);
    pDC->FillRect(CRect(0,0,368,438),&brush);//我的图的大小,嘿嘿
    }
    else
    block1.DrawJiemian(pDC);void Block::DrawJiemian(CDC *pDC)
    {
    CBrush brush(&jiemian);
    pDC->FillRect(CRect(0,0,368,438),&brush);
    }
    现在没那么垃圾了吧?
      

  13.   

    谢谢,能不能再问你几个问题。
    你现在工作了吗?
    现在学MFC工作有出路吗?我大三了。很喜欢编程。
      

  14.   

    我激动得不知道说什么啊。行。这次是为了完成老师给的任务,但是我也会好好学MFC的。
    谢谢你。前辈。景仰。以后多多指教。我在沈阳