📄 menu.cpp
字号:
// 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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -