📄 menu.h
字号:
// ████████████
// ██╭------------╮██
// █╭╯ Menu.h ╰╮█
// █| 菜单类头文件 |█
// █╰----------------╯█
// ████████████
#if !defined(AFX_MENU_H__85F73C78_057F_4EE3_8A0A_474170DD6A53__INCLUDED_)
#define AFX_MENU_H__85F73C78_057F_4EE3_8A0A_474170DD6A53__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <ddraw.h>
//------ 清除与重载的宏 -------//
#define SafeRelease(x) if (x) { x->Release(); x=NULL;}
#define SafeDelete(x) if (x) {delete x;x=NULL;}
#define ButtonMax 604
class CMenu
{
public:
CMenu();
virtual ~CMenu();
void CreateButton(const LPCTSTR name,int x,int y);//创建按钮
void Show();//显示图片
void MouseDown();//鼠标按下判断
void MouseMove();//鼠标移到判断
bool IsEmpty() const {return MenuNum==0;}//菜单列栈中是否为空
CMenu& CreateMenu(const LPCTSTR MenuName,int x,int y,bool havebutton);//创建菜单
CMenu& DelMenu();//删除顶栈的窗体
// void Alphi(int x,int y,int ALPHA);
void ButtonOn(int buttonid,LPCTSTR buttonbmpname);//改变按钮
void CreateTile(LPDIRECTDRAWSURFACE7 face);//创建Tile
struct MenuNode
{
LPDIRECTDRAWSURFACE7 MenuSurface; //窗体页面
LPCTSTR MenuName; //窗体名
int MenuX,MenuY; //窗体坐标
int MenuWidth,MenuHeight;
LPDIRECTDRAWSURFACE7 ButtonSurface[ButtonMax]; //按钮页面
int ButtonID; //按钮ID
int ButtonX[ButtonMax],ButtonY[ButtonMax]; //按钮坐标
int ButtonWidth[ButtonMax],ButtonHeight[ButtonMax];
LPCTSTR ButtonName[ButtonMax]; //按钮名
bool HaveButton;//是否是有按钮的菜单
MenuNode* link; //下一个菜单
};
MenuNode* top;//指向栈顶节点和后节点
RECT destRect;
private:
typedef struct
{
RGBQUAD depth; // How many bits of precision per channel
RGBQUAD Position; // At what bit position does the color start
UINT bpp;
} RGBFORMAT;
RGBFORMAT g_pixelFormat;
LPDIRECTDRAWSURFACE7 BMPToSurface(LPCTSTR bmpname,int& width,int& height);
// bool GetRGBFormat(LPDIRECTDRAWSURFACE7 surf, RGBFORMAT* rgb);
int MenuNum;
};
void ButtonClick(LPCTSTR name);
void NotButtonClick(LPCTSTR name);
#endif // !defined(AFX_MENU_H__85F73C78_057F_4EE3_8A0A_474170DD6A53__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -