www.pudn.com > vehiclehsv.rar > stack.h, change:2002-04-10,size:1504b


//owner defined stack 
class MYSTACK 
{ 
/***********************************/ 
/***********************************/ 
/**            Ա         **/ 
/***********************************/ 
/***********************************/ 
public: 
	HGLOBAL hMem; 
  	POINT *lpMyStack; 
	LONG  ElementsNum; 
	LONG  ptr; 
 
//////////////////////////////////////////////////////////////// 
BOOL InitStack(HWND hWnd,LONG StackLen) 
{ 
	ElementsNum=StackLen; 
	if((hMem=GlobalAlloc(GHND,ElementsNum*sizeof(POINT)))==NULL) 
	{ 
    	MessageBox(	hWnd,"Error alloc memory!","ErrorMessage",MB_OK| 
                   MB_ICONEXCLAMATION); 
		return FALSE; 
	} 
	lpMyStack=(POINT *)GlobalLock(hMem); 
	memset(lpMyStack,0,ElementsNum*sizeof(POINT)); 
	ptr=0; 
	return TRUE; 
} 
//////////////////////////////////////////////////////////////// 
void DeInitStack() 
{ 
	GlobalUnlock(hMem); 
	GlobalFree(hMem); 
	ElementsNum=0; 
	ptr=0; 
} 
//////////////////////////////////////////////////////////////// 
BOOL MyPush(POINT p) 
{ 
	POINT *TempPtr; 
	if(ptr>=ElementsNum) 
		return FALSE; 
	TempPtr=(POINT *)(lpMyStack+ptr++); 
	(*TempPtr).x=p.x; 
	(*TempPtr).y=p.y; 
	return TRUE; 
} 
//////////////////////////////////////////////////////////////// 
POINT MyPop() 
{ 
	POINT InvalidP; 
	InvalidP.x=-1; 
	InvalidP.y=-1; 
 
	if(ptr<=0) 
		return InvalidP; 
	ptr--; 
	return *(lpMyStack+ptr); 
} 
//////////////////////////////////////////////////////////////// 
BOOL IsStackEmpty() 
{ 
	return (ptr==0)?TRUE:FALSE; 
} 
};