UINT SendMailMulti(LPVOID pParam)//我的线程
{
...
return true;
}AfxBeginThread(SendMailMulti, this);//开始线程void CMDMView::OnStopBtn() //停止线程(按钮)
{}void CMDMView::OnPauseBtn() //暂停和继续(按钮)
{}
问:OnStopBtn() 和 OnPauseBtn() 应该怎么写?
{
...
return true;
}AfxBeginThread(SendMailMulti, this);//开始线程void CMDMView::OnStopBtn() //停止线程(按钮)
{}void CMDMView::OnPauseBtn() //暂停和继续(按钮)
{}
问:OnStopBtn() 和 OnPauseBtn() 应该怎么写?
解决方案 »
- 回来看看兄弟们。有需要床上用品[家纺]的呼我。
- 怎么让CListCtrl不显示列名?
- 想问“灵迅QQ聊天室群发软件”用的什么技术啊
- 请教一个关于CComboBox控件类型由dropdown改变为dropdownlist的问题!谢谢!急!
- 解决问题再送200分!以下的代码错在哪里?
- 怎样让ListBox每行的颜色不一样?最好是有源代码
- 请问哪里能找到CCD,CMOS图象传感器原理的文章?
- 怎样才能学好Visual C++ ?
- win98做服务器,win2000做客户机(在工作组中)可以实现吗?
- 名词解释
- 用到ACCESS数据库的软件在没装ACCESS的电脑上能运行吗?
- 不用控件 自己能否实现 简单鹰眼功能?
SuspendThread()
继续
ResumeThread()_beginThreadex()
_endthreadex()
http://blog.csdn.net/benny5609/archive/2008/03/28/2225049.aspx
m_pThread->ResumeThread();
定义在CMDMView里面了。
HANDLE m_event_stop;BOOL CXXXDlg::OnInitDialog()
{
...
m_event_pause = NULL;
m_event_stop = NULL;
...
}DWORD WINAPI CXxxDlg::ThreadProc(LPVOID lpParameter)
{
CXxxDlg* pDlg = (CXxxDlg*)lpParameter;
int i = 0;
while(true)
{ if(WAIT_OBJECT_0 == WaitForSingleObject(pDlg->m_event_pause, INFINITE))
SetEvent(pDlg->m_event_pause);
if(WAIT_OBJECT_0 == WaitForSingleObject(pDlg->m_event_stop, WAIT_OBJECT_0))
SetEvent(pDlg->m_event_stop);
else
break;
pDlg->SetDlgItemInt(IDC_EDIT1, i);
i++;
Sleep(10);
}
AfxMessageBox("线程即将退出");
return 0;
}void CXxxDlg::OnStart()
{
if(GetDlgItemInt(IDC_EDIT1)>0)
return; SetEvent(m_event_pause);
SetEvent(m_event_stop);
DWORD dwTheadID = 0;
HANDLE hThread = CreateThread(NULL, 0, ThreadProc, this, NULL, &dwTheadID);
m_event_pause = CreateEvent(NULL, FALSE, TRUE, "");
m_event_stop = CreateEvent(NULL, FALSE, TRUE, "");
CloseHandle(hThread);
}void CXxxDlg::OnPause()
{
ResetEvent(m_event_pause);
}void CXxxDlg::OnStop()
{
SetEvent(m_event_pause);
ResetEvent(m_event_stop);
SetDlgItemInt(IDC_EDIT1, 0);
}void CXxxDlg::OnResume()
{
SetEvent(m_event_pause);
}