⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dog.cpp

📁 gps对时
💻 CPP
字号:
// Dog.cpp: implementation of the CDog class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
//#include "TestDog.h"
#include "Dog.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CDog::CDog()
{
	//return;
	bDogServerAskMeExit=false;
	for(int i=0;i<20;i++)
	{
		bUserActive[i]=true;
		hSetUser[i]=CreateEvent( NULL, TRUE, FALSE,NULL );
		ResetEvent(hSetUser[i]);
		TRACE("\nCreateEvent");
	}
	iUsers=2;
	bSetEvent=true;
	iUserNotActiveTimers=0;

	if(NULL==(pSDog=new CDogServer))
		return;	
	if(!pSDog->CreateDispatch(("DogServer.CDogServer")))
	{
		long x=GetLastError();	
		return;
	}	
	LPDISPATCH  lpActive=pSDog->GetDog(); 
	pDog=new CActiveDog(lpActive);
	pDog->LetDogName("区域通信");
}

CDog::~CDog()
{
	for(int i=0;i<20;i++)
	{
		CloseHandle(hSetUser[i]);
	}
	if(pDog!=NULL)
	{
		try
		{
			pDog->TellQuit();
			//Sleep(200);
		}
		catch(...)
		{
		}
		try
		{
			delete pDog;
		}
		catch(...)
		{
		}
	}
	if(pSDog!=NULL)
	{
		try
		{
			delete pSDog;
		}
		catch(...)
		{
		}
	}
}

void CDog::run()
{
//	return;
	if (bSetEvent==true)
	{
		for(int i=0;i<iUsers;i++)
		{
//			TRACE("\nSetEvent");
			bUserActive[i]=false;
			SetEvent(hSetUser[i]);
		}
		bSetEvent=!bSetEvent;
	}
	else
	{	
		bSetEvent=!bSetEvent;
		int i;
		BOOL bActive;
		try
		{
			for(i=0;i<iUsers;i++)
			{
				if (bUserActive[i]==false)
				{
					iUserNotActiveTimers=iUserNotActiveTimers+1;
					TRACE("\niUserNotActiveTimers");
					break;
				}
			}
			if (i==iUsers)
				iUserNotActiveTimers=0;
			if (iUserNotActiveTimers>3)
			{
				TRACE("iUserNotActiveTimers>3");
				return;
			}
			else
			{
				bActive=pDog->TellActive();
				if(bActive==FALSE)
					{
					bDogServerAskMeExit=true;	
					::PostMessage(AfxGetMainWnd()->m_hWnd,WM_CLOSE,0,0);
					}
			}

		}
		catch(...)
		{
			delete pSDog;
			delete pDog;
			if(NULL==(pSDog=new CDogServer))
				return;	
			if(!pSDog->CreateDispatch(("DogServer.CDogServer")))
			{
				long x=GetLastError();	
				return;
			}	
			LPDISPATCH  lpActive=pSDog->GetDog(); 
			pDog=new CActiveDog(lpActive);
			pDog->LetDogName("区域通信");
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -