我要做个排课的进度条.
我在非模态对话框中创建一个CProgressCtrl,在主程序的一个循环中根据实际的进度,发消息给非模态对话框,让CProgressCtrl显示实际进度,
怎样发消息给非模态对话框? 怎样在非模态对话框中让CProgressCtrl显示实际进度?
不知我的方法行得通不,是否有更好的方法?
我在非模态对话框中创建一个CProgressCtrl,在主程序的一个循环中根据实际的进度,发消息给非模态对话框,让CProgressCtrl显示实际进度,
怎样发消息给非模态对话框? 怎样在非模态对话框中让CProgressCtrl显示实际进度?
不知我的方法行得通不,是否有更好的方法?
一般不推荐但好象不要发消息这么复杂
要得到另一个类里的私有成员,想想,该怎么做呢?
::SendMessage(hwndProcessbar,PBM_SETPOS,(WPARAM)iNewPos,0);
例如:
在资源中添加一个消息:WM_TEST
有个非模态对话框的类:CTestDlg
在其中影射此消息的处理函数:
CTestDlg.h中:afx_msg void ShowProgress(WPARAM wParam,LPARAM lParam);
CTestDlg.cpp中:ON_MESSAGE(WM_TEST,ShowProgress)void ShowProgress(WPARAM wParam,LPARAM lParam)
{
m_prgress.SetRange(0,int(wParam));
m_prgress.SetPos((int)lParam);
}
主程序CTest:
在CTest类的头文件里:
CTestDlg *pDlg;
在此类的初始化文件中:
pDlg = new CTestDlg;
pDlg->Create(IDD_TESTDLG,this);
在需要显示进度的地方:
pDlg->ShowWindow(SW_SHOW);
在进度改变的时候:
int nTotal;
int nProgress;
nTotal = ;
nProgress = ;
pDlg->SendMessage(WPARAM(nTotal),LPARAM(nProgress));
LRESULT CDemoDlg::OnProgressOffset(WPARAM wParam,LPARAM lParam)
{
m_progress.OffsetPos(wParam);
return NULL;
}
然后在主程序循环中不断发消息
m_pDlg=new CMyDlg;
m_pDlg->Create(IDD,this);
m_pDlg->ShowWindow(SW_SHOW);
m_pDlg->CenterWindow(this);
::SendMessage(m_pDlg->m_hWnd,WM_PROGRESS_OFFSET,1,NULL);