stack.h
上传用户:cjd055
上传日期:2013-04-01
资源大小:608k
文件大小:1k
- //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;
- }
- };