#include "stdafx.h"
#include "ThreadMessage.h"
#include "Calculate.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "ThreadMessageDlg.h"
/
// CCalculate
IMPLEMENT_DYNCREATE(CCalculate, CWinThread)
CCalculate::CCalculate()
{
}
CCalculate::~CCalculate()
{
}
BOOL CCalculate::InitInstance()
{
// TODO: perform and per-thread initialization here
return TRUE;
}
int CCalculate::ExitInstance()
{
// TODO: perform any per-thread cleanup here
return CWinThread::ExitInstance();
}
BEGIN_MESSAGE_MAP(CCalculate, CWinThread)
//{{AFX_MSG_MAP(CCalculate)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
ON_THREAD_MESSAGE(WM_CALCULATE, OnCaculate)
END_MESSAGE_MAP()
/
// CCalculate message handlers
void CCalculate::OnCaculate(WPARAM wParam, LPARAM lParam)
{
int sum = 0;
for(int i=1; i<=(int)wParam; i++)
{
sum += i;
}
::PostMessage((HWND)GetMainWnd()->GetSafeHwnd(), WM_DISPLAY, sum, NULL);
}
///
void CThreadMessageDlg::OnCalculate()
{
UpdateData();
switch(m_num)
{
case 0:
sendnum = 10;
break;
case 1:
sendnum = 20;
break;
case 2:
sendnum = 30;
break;
}
mycalculate = (CCalculate*)AfxBeginThread(RUNTIME_CLASS(CCalculate));
mycalculate->PostThreadMessage(WM_CALCULATE, sendnum, 0);
}
void CThreadMessageDlg::OnDisplay(WPARAM wParam, LPARAM lParam)
{
m_display.Format("%d", (int)wParam);
UpdateData(false);
}