BOOL CMessage::StartSend()
{
::AfxBeginThread((AFX_THREADPROC)SendThreadStart, this);
return TRUE;
}线程函数
DWORD WINAPI SendThreadStart(void* pPara)
{
CMessage *p = (CMsg*)pPara;
int cnt; CDlg *pDlg = (CDlg *)p->m_Wnd;
pDlg->ShowProgress(0, 4); --> 出错, 为什么?
//pDlg->Test(0, 4); --> 不出错
......
for (cnt=0; cnt < p->Count; cnt++)
{
......
} return TRUE;
}
bool CDlg::ShowProgress(int nMin, int nMax)
{
m_ProgressCtrl.SetRange(nMin, nMax);
m_ProgressCtrl.SetStep( (nMax - 0) / nMax );
for (int i = 0; i<nMax; i++)
{
Sleep(20);
m_ProgressCtrl.StepIt();
}
return true;
}bool CDlg::Test(int nMin, int nMax)
{
CString str; for (int i = 0; i<nMax; i++)
{
str.Format(L" %d", i);
MessageBox(str);
}
return true;
}
解决方案 »
- VC6添加ActiveX控件后,程序启动不了
- 关于2个窗口之间的模态设置
- afxendthread错误,请各位帮忙看看什么问题
- VC实现QQ消息框输入内容发送
- 做控件时遇到的问题
- 有关CListCtrl的两个问题
- 利用SetPixel函数画点位置总不对 咋回事啊???
- 使用WM Format SDK中的wmvnetwrite的一点问题,能够Broadcast
- 用VC如何实现让目录以树形的结构显示
- 非巨牛莫进!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- 宽画笔描绘折线的问题
- 求助,关于程序与浏览器sission共享的问题
在取得DLG窗体句柄时,发消息给HWND,在DLG得到消息时直接调用ShowProgress。其它修改方式,大家补充..
{
int nMin = (int)wParam;
int nMax = (int)lParam; m_ProgressCtrl.ShowWindow(true); m_ProgressCtrl.SetRange(nMin, nMax);
m_ProgressCtrl.SetStep( (nMax - 0) / nMax );
for (int i = 0; i<nMax; i++)
{
Sleep(20);
m_ProgressCtrl.StepIt();
} return 1;
}
{
int nMin = (int)wParam;
int nMax = (int)lParam; m_ProgressCtrl.ShowWindow(true); m_ProgressCtrl.SetRange(nMin, nMax);
m_ProgressCtrl.SetStep( (nMax - 0) / nMax );
for (int i = 0; i<nMax; i++)
{
Sleep(20);
m_ProgressCtrl.StepIt(); CString str;
str.Format(L"%d", i);
MessageBox(str);
} return 1;
}