问题1:如何在对话框里引入CView控件
问题2:我在对话框中引入了EDIT控件,有一个函数,是响应按钮按下消息,函数里调用UpdateData(FALSE)后,EDIT控件会进行更新,我想要完成的是,在那个响应函数里多次调用UpdateData(FALSE);以让EDIT控件显示不同的内容,但实际情况是,不管调用多少次UpdateData(FALSE),EDIT控件只更新到最后一次更新的内容。
我怎么样能够让EDIT控件实现实时的改变。
请大家帮忙,2个问题,每个20分,谢谢啦

解决方案 »

  1.   

    2.你需要引入定时器。比如每隔1秒钟显示时钟。
    或者你也可以用Sleep来延时。。不过不太准确。。
      

  2.   

    建议使用Sleep比较简单,单位为毫秒,例如等1秒Sleep(1000)
      

  3.   

    其实第一个问题也是为了解决第二个问题,
     lixiaosan(小三) 所说的我用了SLEEP延时,但好象没有用,只不过是延时显示了最后一个状态,
    麻烦 lixiaosan(小三) 能说的详细写,或者给我个示例代码,谢谢啦
      

  4.   

    函数执行到最后当然显示最后的状态,如果你想实时改变edit的状态,那么在这个实时改变的函数里面调用更改edit内容的函数不就行了
      

  5.   

    第二个问题:先调用UpdateData(TURE)再调用UpdateData(FALSE)
    或者用GetDlgItem(UINT)和SetDialogText()
      

  6.   

    试了一下 我说的不行,寒一下,不过在UpdateData(FALSE)后面加上messagebox就能更新当前内容了,关注解决方法
      

  7.   

    问题1:
    你必须重载该VIEW并重载其中的三个函数,如下:
    其中OnDestroy请根据实际情况做一些修改,比如有的View会在该函数中释放资源,所以需要调用基类
    的OnDestroy函数,比如CHtmlView就是如此,否则的话调用CWnd::OnDestroy
    void CXXXView::PostNcDestroy()
    {
    }void CXXXView::OnDestroy()
    {
    CWnd::OnDestroy(); 
    // CBase::OnDestroy();
    }int CXXXView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
    {
    return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
    }
      

  8.   

    谢谢各位,wonglaye(山里娃)的方法我没试过,但我今天没时间试了, 要下班了,麻烦wonglaye(山里娃)能否把代码帖一下,我明天来改,另外谢谢所有帮助我的朋友
      

  9.   

    多谢kvls(冰茶)
    第二个问题能否指点一下,谢谢
      

  10.   

    第一个问题没什么好说的!第二个问题:
    问题的症结在于窗口的一切活动都是源于消息循环,而这个默认的消息循环存在于你的主线程中。
    你在主线程中执行的代码阻碍了消息循环,想想在主线程中执行Sleep()有什么意义呢?解决的办法:
    1. 创建一个子线程来更新控件,在子线程中使用Sleep()等待控件显示更新的结果。
    2. 不创建子线程,在你的代码中处理下消息,简单的说,就是你在更新控件后,加入下面的代码:
    MSG msg;
    if( GetMessage (&msg, NULL, 0, 0)) //从消息队列中取消息 
    {
    TranslateMessage(&msg); //转换消息
    DispatchMessage(&msg); //派发消息
    }
      

  11.   

    多谢coldcrane(清风明月),用线程的方法我想到过,但由于想偷懒,没有那样写,先谢谢了,能否把你的第二中方法写详细点,谢了
      

  12.   

    第二种方法就是处理下消息而已,...
    // 设置你的EDIT,不建议使用UpdateData( false ),那样效率太低
    GetDlgItem(IDC_EDIT)->SetWindowText( sValue );
    // 处理消息
    MSG msg;
    if( GetMessage (&msg, NULL, 0, 0)) //从消息队列中取消息 
    {
    TranslateMessage(&msg); //转换消息
    DispatchMessage(&msg); //派发消息
    }
    ...已经没法再详细了
    Sleep( 10 );