15,471
社区成员
发帖
与我相关
我的任务
分享
void CDialog_Tab3::OnBnClickedCheckAutoCarePets()
{
// TODO: 在此添加控件通知处理程序代码
//如果线程句柄为空 创建一个线程
char sz[5] = { 0 };
GetDlgItemText(IDC_EDIT_AUTO_CARE_PETS, sz, sizeof(sz));
if (strlen(sz) == 0)
{
MessageBox("请填写时间间隔", "", MB_OK);
((CButton*)GetDlgItem(IDC_CHECK_AUTO_CARE_PETS))->SetCheck(BST_UNCHECKED);
return;
}
if (m_bCheckCareAllPets == FALSE)
{
m_bCheckCareAllPets = TRUE;
((CEdit*)GetDlgItem(IDC_EDIT_AUTO_CARE_PETS))->EnableWindow(FALSE);
_beginthreadex(NULL, 0, ThreadProc_CareAllPets, this, 0, 0);
m_hEvent_CareAllPets = CreateEvent(0, FALSE, FALSE, NULL);
m_hEvent_IsCareAllPetsStop = CreateEvent(0, FALSE, FALSE, NULL);
SetEvent(m_hEvent_CareAllPets);
SetTimer(IDT_TIMER_CareAllPets, atoi(sz) * 60000, NULL);
return;
}
//如果取消勾选
m_bCheckCareAllPets = FALSE;
((CEdit*)GetDlgItem(IDC_EDIT_AUTO_CARE_PETS))->EnableWindow(TRUE);
SetEvent(m_hEvent_CareAllPets);
::WaitForSingleObject(m_hEvent_IsCareAllPetsStop,INFINITE);
MyDbgPrintf("2");
CloseHandle(m_hEvent_CareAllPets);
CloseHandle(m_hEvent_IsCareAllPetsStop);
m_hEvent_CareAllPets = NULL;
m_hEvent_IsCareAllPetsStop = NULL;
KillTimer(IDT_TIMER_CareAllPets);
MyDbgPrintf("取消自动喂宠");
void CDialog_Tab3::OnTimer(UINT_PTR nIDEvent)
{
switch (nIDEvent)
{
case IDT_TIMER_CareAllPets:
{
SetEvent(m_hEvent_CareAllPets);
}
}
}
unsigned int __stdcall ThreadProc_CareAllPets(void* pArg)
{
CDialog_Tab3* pDialog_Tab3 = (CDialog_Tab3*)pArg;
CPet CMyPet;
MyDbgPrintf("1");
while (::WaitForSingleObject(pDialog_Tab3->m_hEvent_CareAllPets, INFINITE))
{
MyDbgPrintf("3");
CMyPet.GetData();
for (int i = 0; i < CMyPet.GetPetNum(); i++)
{
MyDbgPrintf("4");
if (pDialog_Tab3->m_bCheckCareAllPets == FALSE);
{
SetEvent(pDialog_Tab3->m_hEvent_IsCareAllPetsStop);
return 1;
}
while (CMyPet.GetData()->GetPetInfo()[i].PhysicalPower < 1000 || CMyPet.GetData()->GetPetInfo()[i].Mood < 0x5A)
{
MyDbgPrintf("5");
if (pDialog_Tab3->m_bCheckCareAllPets == FALSE);
{
SetEvent(pDialog_Tab3->m_hEvent_IsCareAllPetsStop);
return 1;
}
CMyPet.FeedPet(i + 1);
Sleep(1000);
}
}
MyDbgPrintf("6");
ResetEvent(pDialog_Tab3->m_hEvent_CareAllPets);
//提示
MyDbgPrintf("全部宠物照顾完成!");
}
}
}