www.gusucode.com > VC++游戏雷霆战机源代码-源码程序 > VC++游戏雷霆战机源代码-源码程序\code\Menu.cpp
//Download by http://www.NewXing.com // Menu.cpp: implementation of the CMenu class. // ////////////////////////////////////////////////////////////////////// #include "Menu.h" char* CMenu::menuText[] = { "开始游戏", "游戏说明", "退出游戏"}; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CMenu::CMenu() { } CMenu::CMenu(CDirectWnd* win) { m_win = win; m_choseitem = 1; m_itemnum = 3; for(int i=0;i<256;i++) { keydown[i]=0; } } CMenu::~CMenu() { m_win = NULL; } void CMenu::CheckKeyboard() { if(GetKey(VK_UP)) { ChangeItem(-1); } if(GetKey(VK_DOWN)) { ChangeItem(1); } } void CMenu::ChangeItem(int num) { switch(num) { case -1: m_choseitem=(m_choseitem>1)?(m_choseitem-1):1; break; case 1: m_choseitem=(m_choseitem<m_itemnum)?(m_choseitem+1):m_itemnum; break; } } /* void CMenu::AddTextItem(int x, int y, char *text, COLORREF textcolor,COLORREF bgcolor,int type) { HDC buf_hdc; m_win->lpBackBuffer->GetDC(&buf_hdc); SetTextColor(buf_hdc,textcolor); if(type==1) SetBkMode(buf_hdc, TRANSPARENT); else if(type==2) { SetBkColor(buf_hdc,bgcolor); SetBkMode(buf_hdc,OPAQUE); } TextOut(buf_hdc,x,y,text,strlen(text)); m_win->lpBackBuffer->ReleaseDC(buf_hdc); } int CMenu::Run() { CheckKeyboard(); AddTextItem(280,140,"雷霆战机",RGB(0,255,128),RGB(255,255,255),1); AddTextItem(280,180,menuText[0],RGB(255,255,0),RGB(255,0,255),(m_choseitem==1)?2:1); AddTextItem(280,200,menuText[1],RGB(255,255,0),RGB(255,0,255),(m_choseitem==2)?2:1); AddTextItem(280,220,menuText[2],RGB(255,255,0),RGB(255,0,255),(m_choseitem==3)?2:1); AddTextItem(280,240,menuText[3],RGB(255,255,0),RGB(255,0,255),(m_choseitem==4)?2:1); return m_choseitem; } */ void CMenu::AddMenuItem(int x, int y, char *text[], COLORREF textcolor,COLORREF bgcolor,int type) { HDC buf_hdc; m_win->lpBackBuffer->GetDC(&buf_hdc); SetTextColor(buf_hdc,textcolor); for(int i = 0 ; i < m_itemnum ; i++) { SetBkMode(buf_hdc, TRANSPARENT); SetBkColor(buf_hdc,RGB(0,0,0)); if(type-1 == i) { SetBkMode(buf_hdc,OPAQUE); SetBkColor(buf_hdc,bgcolor); } TextOut(buf_hdc,x,y+20*i,text[i],strlen(text[i])); } m_win->lpBackBuffer->ReleaseDC(buf_hdc); } void CMenu::AddMenuTitle(int x, int y, char *text, COLORREF textcolor) { HDC buf_hdc; m_win->lpBackBuffer->GetDC(&buf_hdc); SetTextColor(buf_hdc,textcolor); SetBkMode(buf_hdc, TRANSPARENT); TextOut(buf_hdc,x,y,text,strlen(text)); m_win->lpBackBuffer->ReleaseDC(buf_hdc); } int CMenu::Run() { CheckKeyboard(); m_win->BltBitMap(m_win->lpBKGObject[0]); AddMenuTitle(SrcWidth/2 - 40,180,"雷霆战机",RGB(0,255,128)); AddMenuItem(SrcWidth/2 - 40,240,menuText,RGB(255,255,0),RGB(255,0,255),m_choseitem); return m_choseitem; } BOOL CMenu::GetKey(int key) { if(KEYDOWN(key)) { keydown[key]=1; } if(keydown[key]) { if(!KEYDOWN(key)) { keydown[key]=0; return TRUE; } return FALSE; } return FALSE; }