我在MyDlg对话框程序中进行循环数据计算,计算完成大约需要1分钟.为了显示程序在计算不是死机了,我想用一个弹出式对话框TestDlg中的进度条显示MyDlg对话框中循环计算的进度.我该如何做?用:: PostMessage(dlgHwnd,WM_MY_MESSAGE,IDM_MYDATA,(LPARAM)count);是否可以?其中的参数都是什么含义?怎么得到?有没有例子?
例如:在MyDlg中计算for(int i=0;i<100;i++){int k=i;}如何在每赋给k一个值就向TestDlg传送一个值?
请各位多多指教!谢谢!!

解决方案 »

  1.   

    启动一个线程,显示这个进度条对话框。再设置一个全局变量作为进度条的step值,主程序修改这个值,子线程每隔一小段时间读取这个值,然后设置进度条。
      

  2.   

    PostMessage(dlgHwnd,WM_MY_MESSAGE,IDM_MYDATA,(LPARAM)count);是否可以?其中的参数都是什么含义?怎么得到?有没有例子?
    在弹出对话框的.h文件中定义消息
    #define WM_CALC_STEP (WM_USER + 100)
    给弹出对话框添加成员函数
    afx_msg LRESULT OnCalcStep(WPARAM wParam, LPARAM lParam)
    在弹出对话框的cpp文件修改消息响应关联
    BEGIN_MESSAGE_MAP(CSoftPhoneClientDlg, CDialog)
    //{{AFX_MSG_MAP(CSoftPhoneClientDlg)
             ....
    ON_MESSAGE(WM_CALC_STEP, OnCalcStep)
             ....
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    然后就可以在函数OnCalcStep中对进度条进行设置譬如:
    LRESULT OnCalcStep(WPARAM wParam, LPARAM lParam)
    {
      m_indProgress.SetPos(lParam);
    }
    在主窗口中只要调用
    for (...)
    {
    ::PostMessage(hWnd /*弹出窗口的句柄*/,WM_CALC_STEP, 0, i)
    }
      

  3.   

    BombZhang(Love our country != Love the party)
    OK