190717-3
워커 스레드 : MFC 를 사용한 네모계속그리는 쓰레드를 만들어보자
static UINT WorkerThread(LPVOID param); //* static 함수만 가능
UINT CWTView::WorkerThread(LPVOID param)
{
//*
Data* pd = (Data*)param;
CClientDC dc(pd->m_pWnd);
CPoint pt = pd->m_pt;
delete pd;
for (int count = 0; count < 100000;++count) {
for (int i = 0; i <= 100; i += 5) {
dc.Rectangle(pt.x, pt.y, pt.x + i, pt.y + i);
Sleep(50);
}
}
return 0;
}
void CWTView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
Data* pd = new Data(this, point);
AfxBeginThread(WorkerThread, (LPVOID)pd);
CView::OnLButtonDown(nFlags, point);
}
void CUserTView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
AfxBeginThread(RUNTIME_CLASS(CMyThread)); //UI생성 스레드생성 다 해준다.
CView::OnLButtonDown(nFlags, point);
}
- 클래스로 쓰레드 생성하기
void CUIWindow::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
CClientDC dc(this);
dc.Rectangle(point.x-20,point.y-20,point.x+20,point.y+20);
CFrameWnd::OnLButtonDown(nFlags, point);
}
void CUIWindow::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
++m_count;
CString s;
s.Format(_T("count : %d"), m_count);
SetWindowText(s);
CFrameWnd::OnTimer(nIDEvent);
}
int CUIWindow::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 여기에 특수화된 작성 코드를 추가합니다.
SetTimer(10, 1000, NULL);
return 0;
}
'MFC' 카테고리의 다른 글
[MFC] cpp 기본적인 문법들 보충 (2) | 2019.11.14 |
---|---|
[MFC] Template (템플릿) cpp 중요 문법 (0) | 2019.11.13 |
[MFC] MDI, SDI, Document Template (multi, single) (0) | 2019.11.11 |
[MFC] 실행순서, DOC과 View 업데이트, 분할창에 사각형정보 다르게 (0) | 2019.11.10 |
Hide Show Controls Using the Button, List View, Draw Rectangle (0) | 2019.11.09 |