我好郁闷!

RedFire 2000-08-22 02:54:00

在我的应用程序中,在有些时候有较长时间的操作,因此我在我的程序中使用了一个无模式对话框给用户一些提示。程序如下:

(其中,dlgWaiting是一个Dialog类对象。IDC_MESSAGE是该对话框模板中的一个statictext。)

void CMyApp::Waiting(const CString& strWaiting)
{
dlgWaiting.Create(IDD_WAITING);

CWnd* pCtrl = dlgWaiting.GetDlgItem(IDC_MESSAGE);
ASSERT(pCtrl);
pCtrl->SetWindowText(strWaiting);

dlgWaiting.CenterWindow(NULL);
// dlgWaiting.SetWindowPos(&wndTopMost, 0, 0, 0, 0,
// SWP_NOMOVE|SWP_NOSIZE);
::SetWindowPos(dlgWaiting.m_hWnd,HWND_TOPMOST,
0, 0, 0, 0,
SWP_NOMOVE|SWP_NOSIZE);
dlgWaiting.ShowWindow(SW_NORMAL);
}

void CMyApp::EndWaiting()
{
dlgWaiting.DestroyWindow( );
}

  但是,使用的时候出现了问题。比如,我在文档类中使用时。

  ((CMyApp*)AfxGetApp( ))->Waiting("Waiting......");
AfxMessageBox("Ok?");
((CMyApp*)AfxGetApp( ))->EndWaitong( );

如果AfxMessageBox("Ok?")在的话,一切正常;如果去掉的话,对话框倒是出现了,但是信息却不见了。

  这是为什么呢?
...全文
199 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Holly 2000-08-22
  • 打赏
  • 举报
回复
你只要在你的dlgWaiting.ShowWindow(SW_NORMAL)之后,调用:
dlgWaiting.UpdateWindow()就可以了;
原因是因为在你的Waiting和EndWaiting之间的代码如果没有UI的话,那么消息将被堵塞,所以dlgWaiting.ShowWindow(...)的动作直到调用的函数结束才被响应,但此时已经没有窗口了,所以要用UpdateWindow()强制刷新一次!
DragonCheng 2000-08-22
  • 打赏
  • 举报
回复
我认为你可以参考一下VC中CProgressDlg的方法,我很多信息均是从里面得到。
他可以在VC的Componets and Control..中得到
playpcgame 2000-08-22
  • 打赏
  • 举报
回复
((CMyApp*)AfxGetApp( ))->Waiting("Waiting......");
((CMyApp*)AfxGetApp( ))->EndWaitong( );
如果去掉的话,对话框是不会出现的,信息当然看不见了  
haitian99 2000-08-22
  • 打赏
  • 举报
回复
如果去掉的话,你的程序不是变成了
((CMyApp*)AfxGetApp( ))->Waiting("Waiting......");
((CMyApp*)AfxGetApp( ))->EndWaitong( );
对话框刚创建,就销毁了。

我想,你该在 较长时间的操作 完成后,再销毁。
我也这么做过,可没有出过问题。
也许理解错了,你说清楚些。
saiwai76 2000-08-22
  • 打赏
  • 举报
回复
Dlg did not refresh.
during your long job, please send out message to refresh dlg.

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧