写了一个函数,想完善下,大致如下int i=0;
void CMainFrame::OnXml2mysql(){ ……………………………………
/**********************创建一个额外的线程显示进度条************************/ HANDLE h_handle;
h_handle=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL);
CloseHandle(h_handle);/**************************************************************************/for(i;i<length();i++){
……………………
}
}
如上,我线程 domodal()了一个对话框,里面放了一个进度条控件,我想通过主线程里全局变量i的改变来改变进度条,现在对话框能在for循环前显示出来了,那个进度条该怎么操作,小弟新手,才接触多线程,线程间的通信不是很了解,这个是不是主线程向子线程发送消息,然后子线程接收到消息后就调用CProgressCtrl的setpos(i)方法来改变进度条,是怎么操作的
另外还遇到个问题,这个线程使用的API函数能正确在for循环前就执行线程函数,但是我用MFC里面的AfxBeginThread时,它都是等for循环完了才把对话框显示出来,请问这又是怎么回事额好桑
void CMainFrame::OnXml2mysql(){ ……………………………………
/**********************创建一个额外的线程显示进度条************************/ HANDLE h_handle;
h_handle=CreateThread(NULL,0,ThreadFunc,NULL,0,NULL);
CloseHandle(h_handle);/**************************************************************************/for(i;i<length();i++){
……………………
}
}
如上,我线程 domodal()了一个对话框,里面放了一个进度条控件,我想通过主线程里全局变量i的改变来改变进度条,现在对话框能在for循环前显示出来了,那个进度条该怎么操作,小弟新手,才接触多线程,线程间的通信不是很了解,这个是不是主线程向子线程发送消息,然后子线程接收到消息后就调用CProgressCtrl的setpos(i)方法来改变进度条,是怎么操作的
另外还遇到个问题,这个线程使用的API函数能正确在for循环前就执行线程函数,但是我用MFC里面的AfxBeginThread时,它都是等for循环完了才把对话框显示出来,请问这又是怎么回事额好桑
对话框构造函数
CMyDlg(CMainFrmae* pMain)
: m_pMain(pMain){}
void CMainFrame::OnXml2mysql(){
CMyDlg dlg(this);
dlg.DoModal();
}
void CMainFrame::DoSomething(CDialog* pDlg){
for(...)
{
pDlg->SendMessage(...);
}
}
对话框中(OnInitDialog):
m_pMain->DoSomething(this);
对话框响应消息,更新进度条,刷新界面