我在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传送一个值?
请各位多多指教!谢谢!!
例如:在MyDlg中计算for(int i=0;i<100;i++){int k=i;}如何在每赋给k一个值就向TestDlg传送一个值?
请各位多多指教!谢谢!!
在弹出对话框的.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)
}
OK