?? mythread.cpp
字號:
// MyThread.cpp : 實現文件
//
#include "stdafx.h"
#include "WinThreadExample.h"
#include "MyThread.h"
// CMyThread
//HANDLE CMyThread::m_hAnotherDead = CreateEvent(NULL, FALSE, FALSE, NULL);
IMPLEMENT_DYNAMIC(CMyThread, CWinThread)
// CMyThread 消息處理程序
BEGIN_MESSAGE_MAP(CMyThread, CWinThread)
END_MESSAGE_MAP()
CMyThread::CMyThread(CWnd* pWnd, HDC hDC,
CPoint ptPos1, CPoint ptVel1, CPoint ptVel2, CSize Size, COLORREF color)
{
m_pMainWnd = pWnd;
m_pMainWnd->GetClientRect(&m_rectBorder);
m_hDC = hDC;
m_ptPosition1 = ptPos1;
m_ptPosition2 = ptPos1 + Size;
m_ptVelocity1 = ptVel1;
m_ptVelocity2 = ptVel2;
CPen pen(PS_SOLID, 1, color);
m_hPen = (HPEN)pen.Detach();
}
CMyThread::~CMyThread()
{
}
BOOL CMyThread::InitInstance()
{
// TODO: 在此執行任意逐線程初始化
m_pen.Attach(m_hPen);
m_dc.Attach(m_hDC);
while (true)
{
DrawLine();
Sleep(1);
}
m_dc.Detach();
return FALSE;
}
void CMyThread::DrawLine()
{
m_ptPosition1.Offset(m_ptVelocity1);
m_ptPosition2.Offset(m_ptVelocity2);
if (m_ptPosition1.y<m_rectBorder.top)
m_ptVelocity1.y = (m_ptVelocity1.y>0) ? m_ptVelocity1.y : -m_ptVelocity1.y;
else if (m_ptPosition1.y>m_rectBorder.bottom)
m_ptVelocity1.y = (m_ptVelocity1.y>0) ? -m_ptVelocity1.y : m_ptVelocity1.y;
if (m_ptPosition2.y<m_rectBorder.top)
m_ptVelocity2.y = (m_ptVelocity2.y>0) ? m_ptVelocity2.y : -m_ptVelocity2.y;
else if (m_ptPosition2.y>m_rectBorder.bottom)
m_ptVelocity2.y = (m_ptVelocity2.y>0) ? -m_ptVelocity2.y : m_ptVelocity2.y;
if (m_ptPosition1.x<m_rectBorder.left)
m_ptVelocity1.x = (m_ptVelocity1.x>0) ? m_ptVelocity1.x : -m_ptVelocity1.x;
else if (m_ptPosition1.x>m_rectBorder.right)
m_ptVelocity1.x = (m_ptVelocity1.x>0) ? -m_ptVelocity1.x : m_ptVelocity1.x;
if (m_ptPosition2.x<m_rectBorder.left)
m_ptVelocity2.x = (m_ptVelocity2.x>0) ? m_ptVelocity2.x : -m_ptVelocity2.x;
else if (m_ptPosition2.x>m_rectBorder.right)
m_ptVelocity2.x = (m_ptVelocity2.x>0) ? -m_ptVelocity2.x : m_ptVelocity2.x;
CPen* oldpen;
oldpen = m_dc.SelectObject(&m_pen);
m_dc.MoveTo(m_ptPosition1);
m_dc.LineTo(m_ptPosition2);
m_dc.SelectObject(oldpen);
}
void CMyThread::Kill()
{
VERIFY(SetEvent(CreateEvent(NULL, TRUE, FALSE, NULL)));
SetThreadPriority(THREAD_PRIORITY_ABOVE_NORMAL);
WaitForSingleObject(CreateEvent(NULL, TRUE, FALSE, NULL), INFINITE);
WaitForSingleObject(m_hThread, INFINITE);
delete this;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -