【VC开源代码栏目提醒】:网学会员在VC开源代码频道为大家收集整理了ThreadEventView.cpp提供大家参考,希望对大家有所帮助!
// ThreadEventView.cpp : CThreadEventView 类的实现
//
#include "stdafx.h"
#include "ThreadEvent.h"
#include "ThreadEventDoc.h"
#include "ThreadEventView.h"
#include "afxmt.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CEvent comEventStart ;
CEvent comEventEnd ;
// CThreadEventView
IMPLEMENT_DYNCREATE(CThreadEventView, CView)
BEGIN_MESSAGE_MAP(CThreadEventView, CView)
ON_WM_CREATE()
ON_WM_LBUTTONDOWN()
ON_WM_RBUTTONDOWN()
END_MESSAGE_MAP()
// CThreadEventView 构造/销毁
CThreadEventView::CThreadEventView()
{
// TODO: 在此处添加构造代码
}
CThreadEventView::~CThreadEventView()
{
}
BOOL CThreadEventView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: 在此处通过修改 CREATESTRUCT cs 来修改窗口类或
// 样式
return CView::PreCreateWindow(cs);
}
// CThreadEventView 绘制
void CThreadEventView::OnDraw(CDC* /*pDC*/)
{
CThreadEventDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: 在此处为本机数据添加绘制代码
}
// CThreadEventView 诊断
#ifdef _DEBUG
void CThreadEventView::AssertValid() const
{
CView::AssertValid();
}
void CThreadEventView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CThreadEventDoc* CThreadEventView::GetDocument() const // 非调试版本是内联的
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CThreadEventDoc)));
return (CThreadEventDoc*)m_pDocument;
}
#endif //_DEBUG
// CThreadEventView 消息处理程序
UINT EventThread(LPVOID pParam)
{
BOOL runThread=TRUE;
HWND hWnd = (HWND)pParam;
::MessageBox(hWnd,"启动线程.",
"Thread Message",
MB_ICONEXCLAMATION|MB_OK);
comEventStart.Lock();
::MessageBox(hWnd,"线程运行中.",
"Thread Message",
MB_ICONEXCLAMATION|MB_OK);
while(runThread)
{
//Perform the theread's task here.
int retCode= ::WaitForSingleObject(
comEventEnd.m_hObject,0);
if(retCode==WAIT_OBJECT_0)
runThread = FALSE;
}
::MessageBox(hWnd,"结束线程.",
"Thread Message",
MB_ICONEXCLAMATION|MB_OK);
return 0;
}
int CThreadEventView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
HWND hWnd = GetSafeHwnd() ;
AfxBeginThread(EventThread,hWnd) ;
return 0;
}
void CThreadEventView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO:在此添加消息处理
程序代码和/或调用默认值
comEventStart.SetEvent() ;
CView::OnLButtonDown(nFlags, point);
}
void CThreadEventView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO:在此添加消息处理程序代码和/或调用默认值
comEventEnd.SetEvent() ;
CView::OnRButtonDown(nFlags, point);
}