问题1:如何在对话框里引入CView控件
问题2:我在对话框中引入了EDIT控件,有一个函数,是响应按钮按下消息,函数里调用UpdateData(FALSE)后,EDIT控件会进行更新,我想要完成的是,在那个响应函数里多次调用UpdateData(FALSE);以让EDIT控件显示不同的内容,但实际情况是,不管调用多少次UpdateData(FALSE),EDIT控件只更新到最后一次更新的内容。
我怎么样能够让EDIT控件实现实时的改变。
请大家帮忙,2个问题,每个20分,谢谢啦
问题2:我在对话框中引入了EDIT控件,有一个函数,是响应按钮按下消息,函数里调用UpdateData(FALSE)后,EDIT控件会进行更新,我想要完成的是,在那个响应函数里多次调用UpdateData(FALSE);以让EDIT控件显示不同的内容,但实际情况是,不管调用多少次UpdateData(FALSE),EDIT控件只更新到最后一次更新的内容。
我怎么样能够让EDIT控件实现实时的改变。
请大家帮忙,2个问题,每个20分,谢谢啦
或者你也可以用Sleep来延时。。不过不太准确。。
lixiaosan(小三) 所说的我用了SLEEP延时,但好象没有用,只不过是延时显示了最后一个状态,
麻烦 lixiaosan(小三) 能说的详细写,或者给我个示例代码,谢谢啦
或者用GetDlgItem(UINT)和SetDialogText()
你必须重载该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);
}
第二个问题能否指点一下,谢谢
问题的症结在于窗口的一切活动都是源于消息循环,而这个默认的消息循环存在于你的主线程中。
你在主线程中执行的代码阻碍了消息循环,想想在主线程中执行Sleep()有什么意义呢?解决的办法:
1. 创建一个子线程来更新控件,在子线程中使用Sleep()等待控件显示更新的结果。
2. 不创建子线程,在你的代码中处理下消息,简单的说,就是你在更新控件后,加入下面的代码:
MSG msg;
if( GetMessage (&msg, NULL, 0, 0)) //从消息队列中取消息
{
TranslateMessage(&msg); //转换消息
DispatchMessage(&msg); //派发消息
}
// 设置你的EDIT,不建议使用UpdateData( false ),那样效率太低
GetDlgItem(IDC_EDIT)->SetWindowText( sValue );
// 处理消息
MSG msg;
if( GetMessage (&msg, NULL, 0, 0)) //从消息队列中取消息
{
TranslateMessage(&msg); //转换消息
DispatchMessage(&msg); //派发消息
}
...已经没法再详细了
Sleep( 10 );