亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? menu.cpp

?? map editer地圖編輯器
?? CPP
字號:
//    ███████████
//    ██╭----------╮██
//    █╭╯ Menu.cpp ╰╮█
//    █|	菜單類文件	|█
//    █╰--------------╯█
//    ███████████
//				Welcome to http://witsun.myrice.com


#include "stdafx.h"
#include "Menu.h"
#include "DirectDraw.h"
#include <mmsystem.h>
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern CDirectDraw* DirectDraw;
extern CMenu* Menu;
extern void Cleanup();
extern LPDIRECTDRAWSURFACE7 CreateBlankSurface(int nWidth, int nHeight);//創(chuàng)建空白頁
extern bool LeftButton;
extern bool MenuMoveable;
extern int nowx,nowy,TileID;
extern void	ChangeTile();
extern HWND hWnd;
extern int Menu0,Menu1;	//the Tile in Menu's point
extern void TileMenu1();
extern bool MapMove;	//地圖中的元素是否呆經(jīng)過?
/////////////////////////////////////////////////////////////////

CMenu::CMenu()
{
	MenuNum=0;
}


CMenu::~CMenu()
{
	MenuNode* next;
	while(!IsEmpty())
	{
		next=top->link;

		for (int i=0;i<top->ButtonID;i++)
			SafeRelease(top->ButtonSurface[i]);
		SafeRelease(top->MenuSurface);
		SafeDelete(top);

		top= next;

		MenuNum--;
	}
}

/////////////////////////////////////////增加菜單
CMenu& CMenu::CreateMenu(const LPCTSTR menuname,
							 int x,int y,bool havebutton)
{
	MenuNum++;

	MenuNode* p=new MenuNode;
	p->ButtonID=0;
	p->MenuName =menuname;
	p->MenuX=x;
	p->MenuY=y;
	p->HaveButton=havebutton;

	int width,height;
	char* tempname = new char[strlen(menuname)+10];
	strcpy(tempname,"pic\\");
	strcat(tempname,menuname);
	strcat(tempname,".bmp");
	p->MenuSurface=BMPToSurface(tempname,width,height);
	delete tempname;

	p->MenuWidth=width;
	p->MenuHeight=height;
	p->link =top;
	top=p;

	destRect.top=top->MenuY;
	destRect.left=top->MenuX;
	destRect.right=top->MenuX+top->MenuWidth;
	destRect.bottom=top->MenuY+top->MenuHeight;

	return* this;
}

////////////////////////////////////////刪除頂棧的菜單
CMenu& CMenu::DelMenu()
{
	if (!IsEmpty())
	{
		MenuNode* p=top;
		top= top->link;

		for (int i=0;i<p->ButtonID;i++)
			SafeRelease(p->ButtonSurface[i]);
		SafeRelease(p->MenuSurface);
		delete p;

		MenuNum--;
	}
	return* this;
}


/////////////////////////////////////////顯示窗口
void CMenu::Show()
{

	if (!IsEmpty())
/*	{
	DirectDraw->CleanSurface();
	return;
	}
*/
	DirectDraw->lpDDSBack->Blt(&destRect,top->MenuSurface,NULL,DDBLT_WAIT,NULL);

}

///////////////////////////////////創(chuàng)建按鈕
void CMenu::CreateButton(const LPCTSTR name,int x,int y)
{
	if(top->ButtonID<ButtonMax)
	{
		top->ButtonName[top->ButtonID]=name;
		top->ButtonX[top->ButtonID]=x;
		top->ButtonY[top->ButtonID]=y;

		int width,height;
		char* tempname = new char[strlen(top->MenuName)+strlen(name)+11];
		strcpy(tempname,"pic\\");
		strcat(tempname,top->MenuName);
		strcat(tempname,"_");
		strcat(tempname,name);
		strcat(tempname,".bmp");
		top->ButtonSurface[top->ButtonID]=BMPToSurface(tempname,
													width,height);
		delete tempname;
		top->ButtonWidth[top->ButtonID]=width;
		top->ButtonHeight[top->ButtonID]=height;

//		DirectDraw->DDSetColorKey(top->ButtonSurface[top->ButtonID],CLR_INVALID);

		top->MenuSurface->BltFast(x,y,
								top->ButtonSurface[top->ButtonID],
								NULL,
								DDBLTFAST_WAIT/*|DDBLTFAST_SRCCOLORKEY*/);

		top->ButtonID++;
	}
}


///////////////////////////////////創(chuàng)建Tile
void CMenu::CreateTile(LPDIRECTDRAWSURFACE7 face)
{
	static int ID=0;

	if(top->ButtonID<ButtonMax)
	{
		top->ButtonName[top->ButtonID]=(LPCTSTR)ID;
		top->ButtonX[top->ButtonID]=0;
		top->ButtonY[top->ButtonID]=0;

		top->ButtonWidth[top->ButtonID]=40;
		top->ButtonHeight[top->ButtonID]=40;

		top->ButtonSurface[top->ButtonID]=CreateBlankSurface(40, 40);
		top->ButtonSurface[top->ButtonID]->BltFast(0,0,
								face,
								NULL,
								DDBLTFAST_WAIT/*|DDBLTFAST_SRCCOLORKEY*/);

		top->ButtonID++;
		ID++;
	}
}


///////////////////////////////////////////////////加載圖片的函數(shù)
LPDIRECTDRAWSURFACE7 CMenu::BMPToSurface(LPCTSTR file_name,
										 int& width,int& height)
{
	HDC hdc;
	HBITMAP bit;
	LPDIRECTDRAWSURFACE7 surf;

	// load the interface bitmap
	bit=(HBITMAP) LoadImage(NULL,file_name,IMAGE_BITMAP,0,0,
								LR_DEFAULTSIZE|LR_LOADFROMFILE);
	if (!bit)
		
		// failed to load, return failure to caller
		return NULL;

	// get bitmap dimensions
	BITMAP bitmap;
    GetObject( bit, sizeof(BITMAP), &bitmap );
	int surf_width=bitmap.bmWidth;
	int surf_height=bitmap.bmHeight;

	width=bitmap.bmWidth;
	height=bitmap.bmHeight;

	// create surface
	HRESULT ddrval;
	DDSURFACEDESC2 ddsd;
	ZeroMemory(&ddsd,sizeof(ddsd));
	ddsd.dwSize = sizeof(DDSURFACEDESC2);
	ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT ;
	ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; 
	ddsd.dwWidth = surf_width;
	ddsd.dwHeight = surf_height; 

	// attempt to create surface
	ddrval=DirectDraw->lpDD->CreateSurface(&ddsd,&surf,NULL);

	// created ok?
	if (ddrval!=DD_OK) {

		// no, release the bitmap and return failure to caller
		DeleteObject(bit);
		return NULL;

	} else {

		// yes, get a DC for the surface
		surf->GetDC(&hdc);

		// generate a compatible DC
		HDC bit_dc=CreateCompatibleDC(hdc);

		// blit the interface to the surface
		SelectObject(bit_dc,bit);
		BitBlt(hdc,0,0,surf_width,surf_height,bit_dc,0,0,SRCCOPY);

		// release the DCs
		surf->ReleaseDC(hdc);
		DeleteDC(bit_dc);

	}

	// clear bitmap 
	DeleteObject(bit);

	// return pointer to caller
	return surf;
}

//////////////////////////////////////////////////鼠標(biāo)按下處理
void CMenu::MouseDown()
{
	POINT point;
	GetCursorPos(&point);

	if (!IsEmpty())//是否有菜單?
	{
		if (top->HaveButton)//是否有按鈕?
		{
			for (int i=0;i<top->ButtonID;i++)//鼠標(biāo)是否在有在按鈕上?
			{
				if (point.x>top->MenuX+top->ButtonX[i] &&
					point.x<top->MenuX+top->ButtonX[i]+top->ButtonWidth[i] &&
					point.y>top->MenuY+top->ButtonY[i] &&
					point.y<top->MenuY+top->ButtonY[i]+top->ButtonHeight[i])
				{
					if ((strcmp(top->MenuName,"TileMenu0")==0 ||strcmp(top->MenuName,"TileMenu1")==0) && i>3)//選擇Tile
					{
						TileID=i;
						return;
					}

					LPCTSTR A=top->MenuName;
					LPCTSTR B=top->ButtonName[i];
					char* c = new char[strlen(A)+strlen(B)+2];

					strcpy(c,A);
					strcat(c,"_");
					strcat(c,B);

					ButtonClick(c);

					delete c;
					return;
				}
			}
		}
		else//菜單如果沒有按鈕
		{
			NotButtonClick(top->MenuName);
			return;
		}
		
		if(point.x<top->MenuX ||
				point.x>top->MenuX+top->MenuWidth ||
				point.y<top->MenuY ||
				point.y>top->MenuY+top->MenuHeight)//鼠標(biāo)是否在菜單外面?
		ChangeTile();//change Tile. 
	}
	else
		ChangeTile();

}

//////////////////////////////////////////////////鼠標(biāo)移動(dòng)處理
void CMenu::MouseMove()
{
	if (!IsEmpty() && top->HaveButton)//是否有菜單并有按鈕?
	{
		POINT point;
		GetCursorPos(&point);

		for (int i=0;i<top->ButtonID;i++)
		{
			if (point.x>top->MenuX+top->ButtonX[i] &&
				point.x<top->MenuX+top->ButtonX[i]+top->ButtonWidth[i] &&
				point.y>top->MenuY+top->ButtonY[i] &&
				point.y<top->MenuY+top->ButtonY[i]+top->ButtonHeight[i])//鼠標(biāo)在按鈕或Tile上時(shí)
			{
				if ((strcmp(top->MenuName,"TileMenu0")==0 ||strcmp(top->MenuName,"TileMenu1")==0) && i>3)//如杲在Tile上就反回
					return;
					

				LPCTSTR A=top->MenuName;
				LPCTSTR B=top->ButtonName[i];
				char* c = new char[strlen(A)+strlen(B)+5];

				strcpy(c,A);
				strcat(c,"_");
				strcat(c,B);
				strcat(c,"_On");

				ButtonOn(i,c);

				delete c;
				return;
			}
			else//如果不在按鈕或Tile上
			{
				if ((strcmp(top->MenuName,"TileMenu0")!=0 || strcmp(top->MenuName,"TileMenu1")!=0) && i<4)//是否不是Tile
				{

					DirectDraw->DDSetColorKey(top->ButtonSurface[i],CLR_INVALID);
					top->MenuSurface->BltFast(top->ButtonX[i],top->ButtonY[i],
												top->ButtonSurface[i],
												NULL,
												DDBLTFAST_WAIT/*|DDBLTFAST_SRCCOLORKEY*/);
				}
			}
		}
		
		if (point.x>top->MenuX &&
				point.x<top->MenuX+top->MenuWidth &&
				point.y>top->MenuY &&
				point.y<top->MenuY+top->MenuHeight &&
				LeftButton)
		{
			nowx=point.x;
			nowy=point.y;
			MenuMoveable=true;
			return;
		}
	}
}

void CMenu::ButtonOn(int buttonid,LPCTSTR buttonname)
{
	int width,height;
	LPDIRECTDRAWSURFACE7 tempsurface;

	char* tempname = new char[strlen(buttonname)+10];
	strcpy(tempname,"pic\\");
	strcat(tempname,buttonname);
	strcat(tempname,".bmp");
	tempsurface=BMPToSurface(tempname,
							width,height);
	delete tempname;

//	DirectDraw->DDSetColorKey(tempsurface,CLR_INVALID);

	top->MenuSurface->BltFast(top->ButtonX[buttonid],top->ButtonY[buttonid],
							tempsurface,
							NULL,
							DDBLTFAST_WAIT/*|DDBLTFAST_SRCCOLORKEY*/);


}




//		████████████████████████████
//		██╭--------------------------------------------╮██
//		█╭╯		以 下 為 鼠 標(biāo) 事 件 區(qū)		  ╰╮█
//		█|											    |█
//		█|												|█
//		█|	★鼠 標(biāo) 單 擊 與 鼠 標(biāo) 移 動(dòng)★		|█
//		█╰------------------------------------------------╯█
//		████████████████████████████

//////////////////////////////////////////////////鼠標(biāo)單擊事情
void ButtonClick(LPCTSTR name)
{
	if		(strcmp(name,"TileMenu1_End")==0)
	{
		Menu->DelMenu();
	}

	else if (strcmp(name,"TileMenu1_Move")==0)
	{
		MapMove=!MapMove;
	}

	else if (strcmp(name,"TileMenu1_Up")==0)
	{
		Menu1-=30;
		if (Menu1<1)
			Menu1=0;

		Menu->DelMenu();
		TileMenu1();
	}

		else if (strcmp(name,"TileMenu1_Down")==0)
	{
		Menu1+=30;
		if (Menu1>540+18)
			Menu1=600-48;

		Menu->DelMenu();
		TileMenu1();
	}

	else if (strcmp(name,"Exit_Yes")==0)
	{
		DestroyWindow(hWnd);
	}
	
	else if (strcmp(name,"Exit_No")==0)
	{
		Menu->DelMenu();
	}

	else if (strcmp(name,"TileMenu0_End")==0)
	{
		Menu->DelMenu();
	}

	else if (strcmp(name,"TileMenu0_Move")==0)
	{
		MapMove=!MapMove;
	}

	else if (strcmp(name,"")==0)
	{
	}
}

void NotButtonClick(LPCTSTR name)
{
		if		(strcmp(name,"About")==0)
	{
		Menu->DelMenu();
		return;
	}
		else if (strcmp(name,"")==0)
	{
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区在线播放| 国产精品久久久久久妇女6080| 亚洲一区二区在线免费看| thepron国产精品| 中文字幕av免费专区久久| 成人午夜视频免费看| 国产精品国产三级国产有无不卡| av在线这里只有精品| 一区二区三区免费网站| 欧美乱熟臀69xxxxxx| 蜜臀av一区二区在线观看 | 成人黄动漫网站免费app| 国产亚洲欧美中文| 91小视频免费看| 香蕉影视欧美成人| 久久夜色精品一区| av在线不卡电影| 亚洲亚洲精品在线观看| 日韩精品一区在线观看| 成人精品一区二区三区中文字幕| 一区二区三区日本| 欧美大尺度电影在线| 成人免费视频视频| 亚洲一区二区欧美| 久久免费精品国产久精品久久久久| 成人av在线影院| 五月天欧美精品| 国产日韩欧美制服另类| 精品视频资源站| 国产成人在线观看免费网站| 尤物av一区二区| 亚洲精品一区二区精华| 色婷婷久久久久swag精品| 蜜臀av亚洲一区中文字幕| 国产精品久久久久久久浪潮网站 | 亚洲丝袜另类动漫二区| 欧美一区二区精美| 99精品欧美一区| 久久国产精品色婷婷| 亚洲欧美色综合| 26uuu国产日韩综合| 欧洲亚洲精品在线| 国产xxx精品视频大全| 天天av天天翘天天综合网| 国产精品久久久久久久久免费樱桃 | 一本大道久久a久久精二百| 久88久久88久久久| 亚洲午夜免费视频| 国产精品久久久久久久久快鸭| 日韩午夜在线播放| 欧美亚洲国产bt| www.久久久久久久久| 韩国av一区二区三区四区| 亚洲电影一区二区三区| 中文字幕+乱码+中文字幕一区| 日韩一级二级三级| 欧美午夜精品一区二区蜜桃 | 不卡av在线网| 国内外精品视频| 美女在线视频一区| 日韩专区一卡二卡| 亚洲一区在线播放| 亚洲精品日产精品乱码不卡| 国产日本欧洲亚洲| 久久亚洲精品小早川怜子| 91精品国产手机| 欧美日韩国产免费一区二区| 色综合久久久久综合| 成人av网址在线| 成人国产精品免费网站| 国产成人综合自拍| 国产麻豆一精品一av一免费| 美女免费视频一区| 欧美aⅴ一区二区三区视频| 午夜激情久久久| 亚洲午夜在线电影| 偷拍日韩校园综合在线| 亚洲一二三四在线| 性久久久久久久| 免费看日韩a级影片| 日本不卡1234视频| 另类的小说在线视频另类成人小视频在线| 天天操天天干天天综合网| 日本不卡中文字幕| 久久成人久久爱| 国产乱码精品一区二区三区av| 狠狠色丁香久久婷婷综合丁香| 精品一区二区三区在线视频| 狠狠狠色丁香婷婷综合久久五月| 九一久久久久久| 国产成人av电影在线播放| 成人黄色av电影| 欧美亚洲动漫制服丝袜| 91精品免费在线观看| 日韩精品一区二区三区在线播放| 精品福利二区三区| 国产精品乱人伦| 亚洲午夜一区二区三区| 久久黄色级2电影| 成人精品小蝌蚪| 欧美日韩在线直播| 精品成人佐山爱一区二区| 欧美国产日韩精品免费观看| 国产精品电影一区二区三区| 亚洲一区视频在线观看视频| 免费成人性网站| 粉嫩嫩av羞羞动漫久久久| 91久久精品一区二区三| 7777精品伊人久久久大香线蕉完整版| 欧美成人精精品一区二区频| 国产精品私人自拍| 亚洲国产视频在线| 国产一区二区三区四区五区美女| av中文字幕亚洲| 日韩欧美专区在线| 亚洲色图欧美激情| 另类专区欧美蜜桃臀第一页| 成人国产精品视频| 日韩视频免费直播| 亚洲欧洲制服丝袜| 紧缚奴在线一区二区三区| 色综合天天综合给合国产| 欧美一区二区三区在线| 国产精品系列在线| 日本不卡不码高清免费观看| 99久久精品免费看国产免费软件| 7777精品伊人久久久大香线蕉的| 国产欧美一区二区三区在线看蜜臀 | 久久99久久99精品免视看婷婷| 丁香亚洲综合激情啪啪综合| 欧美群妇大交群的观看方式| 国产精品美日韩| 久久精品久久精品| 91高清视频免费看| 国产人成亚洲第一网站在线播放| 亚洲成人av一区二区三区| 成人app软件下载大全免费| 日韩欧美一级特黄在线播放| 一区二区三区四区视频精品免费 | 国产欧美精品在线观看| 手机精品视频在线观看| av高清不卡在线| www一区二区| 青椒成人免费视频| 欧美中文字幕一二三区视频| 中文文精品字幕一区二区| 久久国产精品无码网站| 5月丁香婷婷综合| 亚洲国产日产av| 日本伦理一区二区| 成人免费一区二区三区在线观看| 国产在线乱码一区二区三区| 制服丝袜国产精品| 午夜精品一区在线观看| 欧美专区亚洲专区| 亚洲品质自拍视频网站| 97se亚洲国产综合在线| 国产精品乱码人人做人人爱| 粉嫩在线一区二区三区视频| 久久久久久亚洲综合| 精品中文字幕一区二区| 日韩手机在线导航| 激情另类小说区图片区视频区| 日韩一二三区不卡| 美女看a上一区| 精品免费国产二区三区| 极品瑜伽女神91| 久久久精品天堂| 国产成人精品影视| 国产精品全国免费观看高清| 国产成人夜色高潮福利影视| 国产视频一区二区在线观看| 国产高清不卡二三区| 国产欧美一区视频| 99精品视频一区二区| 一区二区不卡在线视频 午夜欧美不卡在 | 九色porny丨国产精品| 日韩一级视频免费观看在线| 老司机精品视频导航| 精品国产欧美一区二区| 国产精品一区二区在线播放| 国产日韩av一区二区| 色综合色综合色综合色综合色综合| 成人免费一区二区三区在线观看| 97久久精品人人爽人人爽蜜臀| 欧美色国产精品| 午夜精品福利久久久| 亚洲欧洲av在线| 成人综合在线观看| 亚洲欧美区自拍先锋| 欧美色大人视频| 精品一区二区在线免费观看| 国产欧美日韩激情| 91久久精品一区二区二区| 偷拍一区二区三区| 国产亚洲欧美日韩俺去了| 97se亚洲国产综合自在线| 日韩精品一级中文字幕精品视频免费观看| 日韩欧美国产系列| 成人aa视频在线观看|