怎样从主对话框向弹出对话框实时传送数据?请各位多多指教!谢谢!!
我在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传送一个值?
请各位多多指教!谢谢!!
问题点数:20、回复次数:3Top
1 楼BombZhang(我当大哥很久了)回复于 2006-03-05 21:41:12 得分 10
启动一个线程,显示这个进度条对话框。再设置一个全局变量作为进度条的step值,主程序修改这个值,子线程每隔一小段时间读取这个值,然后设置进度条。Top
2 楼dnliophsam()回复于 2006-03-06 11:03:19 得分 10
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)
}Top
3 楼sinkileu(小心)回复于 2006-03-06 11:27:32 得分 0
BombZhang(Love our country != Love the party)
OKTop




