📄 wendlg.cpp
字号:
// wenDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "wen.h"
#include "wenDlg.h"
BOOL playresource(int lpname)
{
BOOL brtn;
LPSTR lpres;
HANDLE hres;
HRSRC hresinfo;
HINSTANCE nl=AfxGetInstanceHandle();
/* find the wave resource. */
hresinfo= FindResource(nl,MAKEINTRESOURCE(lpname),"wave");
if(hresinfo == NULL)
return false;
/* load the wave resource. */
hres = LoadResource(nl,hresinfo);
if (hres == NULL)
return false;
/* lock the wave resource and play it. */
lpres=(LPSTR)LockResource(hres);
if(lpres==NULL)
return false;
brtn = sndPlaySound(lpres, SND_MEMORY | SND_ASYNC);
if(brtn == NULL)
return false;
/* free the wave resource and return success or failure. */
FreeResource(hres);
return true;
}
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// 获取应用程序路径
CString CwenDlg::GetExePath()
{
CString path,str;
path=AfxGetApp()->m_pszHelpFilePath;
str=AfxGetApp()->m_pszExeName;
path=path.Left(path.GetLength()-str.GetLength()-4);
return path;
}
void CwenDlg::sk_rand() //随便机产生色块
{
bool key=1;
int x,y;
CBrush m_Brush,*m_pBrush;
while(key)
{
k_x=rand()%40;
k_y=rand()%30;
m_new=m_head;
do // 追尾检测
{
if((k_x==m_new->x)&(k_y==m_new->y))
key=1;
else
key=0;
m_new=m_new->next;
}
while((m_new!=m_head)&(!key));
}
x=k_x*20+9;
y=k_y*20+9;
m_Brush.CreateSolidBrush(RGB(0,255,255));
m_pBrush=bg_dc->SelectObject(&m_Brush);
my_dc->Rectangle(0,0,19,19);
my_dc->SetBkColor(RGB(0,255,0));
my_dc->TextOutA(1,1,"¤");
my_dc->SelectObject(m_pBrush);
m_Brush.DeleteObject();
op_dc->BitBlt(x,y,19,19,my_dc,0,0,SRCCOPY);
gdc->BitBlt(0,0,tss.window_k-90,tss.window_g,op_dc,0,0,SRCCOPY); //复制到显示缓存 OnPaint
}
void CwenDlg::dk_rand() //随便机产生炸弹
{
bool key=1;
int x,y;
CBrush m_Brush,*m_pBrush;
while(key)
{
x=rand()%40;
y=rand()%30;
m_new=m_head;
do // 追尾检测
{
if((x==m_new->x)&(y==m_new->y))
key=1;
else
key=0;
m_new=m_new->next;
}
while((m_new!=m_head)&(!key));
if(key==1)
continue;
if(d_head!=NULL)
{
d_new=d_head;
do // 追尾检测
{
if((x==d_new->x)&(y==d_new->y))
key=1;
else
key=0;
if(d_new->next!=NULL)
d_new=d_new->next;
}
while((d_new->next!=NULL)&(!key));
}
if(key==1)
continue;
if((k_x==x)&(k_y==y))
key=1;
else
key=0;
}
if(d_head==NULL)
{
d_new=(struct dkuai *)malloc(sizeof(struct dkuai));
d_head=d_new;
d_new->prv=NULL;
d_new->next=NULL;
}
else
{
d_this=d_head;
while(d_this->next!=NULL)
d_this=d_this->next;
d_new=(struct dkuai *)malloc(sizeof(struct dkuai));
d_this->next=d_new;
d_new->prv=d_this;
d_new->next=NULL;
}
d_new->x=x;
d_new->y=y;
x=x*20+9;
y=y*20+9;
m_Brush.CreateSolidBrush(RGB(0,255,255));
m_pBrush=bg_dc->SelectObject(&m_Brush);
my_dc->Rectangle(0,0,19,19);
my_dc->SetBkColor(RGB(255,0,0));
my_dc->TextOutA(1,1,"⊙");
my_dc->SelectObject(m_pBrush);
m_Brush.DeleteObject();
op_dc->BitBlt(x,y,19,19,my_dc,0,0,SRCCOPY);
gdc->BitBlt(0,0,tss.window_k-90,tss.window_g,op_dc,0,0,SRCCOPY); //复制到显示缓存 OnPaint
}
void CwenDlg::m_cls() //刷新显示表格(清屏)
{
SetBg();
tss.dell=0;
tss.fx[0]=4;
tss.sulan=2;
tss.ToNext=0;
tss.k_b=1;
tss.key=0;
d_head=NULL;
m_new=m_head;
m_new->x=15;
m_new->y=15;
m_new=m_new->next;
m_new->x=14;
m_new->y=15;
m_new=m_new->next;
m_new->x=13;
m_new->y=15;
m_this=m_new;
m_this->next=m_head;
m_head->prv=m_this;
m_new=m_new->next;
while(m_new!=m_head)
{
m_this=m_new->next;
free(m_new);
m_new=m_new;
}
m_this=m_head->prv;
sk_rand();
dk_rand();
CString tmp;
tss.sulan=3;
tmp.Format("%d",tss.sudu);
m_9.SetWindowTextA(tmp);
tmp.Format("%d",tss.sulan);
m_11.SetWindowTextA(tmp);
}
void CwenDlg::SetBg() //显示背景表格
{
CBrush m_Brush,*m_pBrush;
m_Brush.CreateSolidBrush(tss.bg_color);
m_pBrush=op_dc->SelectObject(&m_Brush);
op_dc->Rectangle(0,0,tss.window_k,tss.window_g);
op_dc->SelectObject(m_pBrush);
m_Brush.DeleteObject();
// DisBg();
}
void CwenDlg::DisBg() //显示背景表格
{
int j,k;
for(j=0;j<801;j+=20)
{
for(k=0;k<601;k+=4)
{
op_dc->SetPixel(j+8,k+8,tss.color);
}
}
for(j=0;j<601;j+=20)
{
for(k=0;k<801;k+=4)
{
op_dc->SetPixel(k+8,j+8,tss.color);
}
}
gdc->BitBlt(0,0,tss.window_k-90,tss.window_g,op_dc,0,0,SRCCOPY);
}
void CwenDlg::DellBg() //显示背景表格
{
int j,k;
for(j=0;j<801;j+=20)
{
for(k=0;k<601;k+=4)
{
op_dc->SetPixel(j+8,k+8,tss.bg_color);
}
}
for(j=0;j<601;j+=20)
{
for(k=0;k<801;k+=4)
{
op_dc->SetPixel(k+8,j+8,tss.bg_color);
}
}
//---------------------------------------------
for(j=0;j<801;j+=800)
{
for(k=0;k<601;k+=4)
{
op_dc->SetPixel(j+8,k+8,tss.color);
}
}
for(j=0;j<601;j+=600)
{
for(k=0;k<801;k+=4)
{
op_dc->SetPixel(k+8,j+8,tss.color);
}
}
gdc->BitBlt(0,0,tss.window_k-90,tss.window_g,op_dc,0,0,SRCCOPY);
}
void CwenDlg::SetSkXy(int x,int y)
{
CBrush m_Brush,*m_pBrush;
x=x*20+9;
y=y*20+9;
m_Brush.CreateSolidBrush(tss.bg_color);
m_pBrush=my_dc->SelectObject(&m_Brush);
my_dc->Rectangle(0,0,19,19);
my_dc->SelectObject(m_pBrush);
m_Brush.DeleteObject();
op_dc->BitBlt(x,y,19,19,my_dc,0,0,SRCCOPY);
gdc->BitBlt(0,0,tss.window_k-90,tss.window_g,op_dc,0,0,SRCCOPY); //复制到显示缓存 OnPaint
}
void CwenDlg::SetSk(kuai_type *tmp)
{
int x,y;
CBrush m_Brush,*m_pBrush;
x=tmp->x*20+9;
y=tmp->y*20+9;
m_Brush.CreateSolidBrush(RGB(0,255,255));
m_pBrush=bg_dc->SelectObject(&m_Brush);
my_dc->Rectangle(0,0,19,19);
my_dc->SetBkColor(RGB(0,255,0));
my_dc->TextOutA(1,1,"¤");
my_dc->SelectObject(m_pBrush);
m_Brush.DeleteObject();
op_dc->BitBlt(x,y,19,19,my_dc,0,0,SRCCOPY);
gdc->BitBlt(0,0,tss.window_k-90,tss.window_g,op_dc,0,0,SRCCOPY); //复制到显示缓存 OnPaint
}
void CwenDlg::DellSk(kuai_type *tmp)
{
int x,y;
CBrush m_Brush,*m_pBrush;
x=tmp->x*20+9;
y=tmp->y*20+9;
m_Brush.CreateSolidBrush(tss.bg_color);
m_pBrush=my_dc->SelectObject(&m_Brush);
my_dc->Rectangle(0,0,19,19);
my_dc->SelectObject(m_pBrush);
m_Brush.DeleteObject();
op_dc->BitBlt(x,y,19,19,my_dc,0,0,SRCCOPY);
gdc->BitBlt(0,0,tss.window_k-90,tss.window_g,op_dc,0,0,SRCCOPY); //复制到显示缓存 OnPaint
}
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CwenDlg 对话框
CwenDlg::CwenDlg(CWnd* pParent /*=NULL*/)
: CDialog(CwenDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CwenDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STA, m_sta);
DDX_Control(pDX, IDC_1, m_1);
DDX_Control(pDX, IDC_2, m_2);
DDX_Control(pDX, IDC_3, m_3);
DDX_Control(pDX, IDC_4, m_4);
DDX_Control(pDX, IDC_5, m_5);
DDX_Control(pDX, IDC_6, m_6);
DDX_Control(pDX, IDC_7, m_7);
DDX_Control(pDX, IDC_02, m_8);
DDX_Control(pDX, IDC_01, m_9);
DDX_Control(pDX, IDC_03, m_10);
DDX_Control(pDX, IDC_04, m_11);
DDX_Control(pDX, IDC_13, m_13);
DDX_Control(pDX, IDC_12, m_12);
DDX_Control(pDX, IDC_14, m_14);
DDX_Control(pDX, IDC_15, m_15);
DDX_Control(pDX, IDC_BUTTON1, m_16);
}
BEGIN_MESSAGE_MAP(CwenDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_MOUSEMOVE()
ON_WM_DESTROY()
ON_WM_TIMER()
ON_BN_CLICKED(IDC_STA, &CwenDlg::OnBnClickedSta)
ON_BN_CLICKED(IDC_1, &CwenDlg::OnBnClicked1)
ON_BN_CLICKED(IDC_2, &CwenDlg::OnBnClicked2)
ON_BN_CLICKED(IDC_3, &CwenDlg::OnBnClicked3)
ON_BN_CLICKED(IDC_4, &CwenDlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_5, &CwenDlg::OnBnClickedButton5)
ON_BN_CLICKED(IDC_6, &CwenDlg::OnBnClickedButton6)
ON_BN_CLICKED(IDC_7, &CwenDlg::OnBnClicked7)
ON_BN_CLICKED(IDC_13, &CwenDlg::OnBnClicked13)
ON_BN_CLICKED(IDC_12, &CwenDlg::OnBnClicked12)
ON_BN_CLICKED(IDC_14, &CwenDlg::OnBnClicked14)
ON_BN_CLICKED(IDC_15, &CwenDlg::OnBnClicked15)
ON_BN_CLICKED(IDC_16, &CwenDlg::OnBnClicked16)
END_MESSAGE_MAP()
// CwenDlg 消息处理程序
BOOL CwenDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
//设置初始值----------------------------------------------
tss.window_k=900;
tss.window_g=648;
tss.sulan=3;
tss.sudu=250;
tss.kuandu=40;
tss.fx[0]=4;
tss.key=0;
tss.gaodu=30;
tss.color=RGB(228,226,213);
tss.kuai_color=RGB(0,255,255);
tss.bg_color=RGB(0,0,0);
tss.k_b=0;
srand((unsigned)time(NULL));
d_head=NULL;
m_new=(struct kuai_type *)malloc(sizeof(struct kuai_type));
m_head=m_new;
m_new->x=15;
m_new->y=15;
m_this=m_new;
m_new=(struct kuai_type *)malloc(sizeof(struct kuai_type));
m_this->next=m_new;
m_new->prv=m_this;
m_new->x=14;
m_new->y=15;
m_this=m_new;
m_new=(struct kuai_type *)malloc(sizeof(struct kuai_type));
m_this->next=m_new;
m_new->prv=m_this;
m_new->x=13;
m_new->y=15;
m_this=m_new;
m_this->next=m_head;
m_head->prv=m_this;
//--------------------------------------------------------
this->MoveWindow(20,20,tss.window_k,tss.window_g); //设置窗体宽高待
//ShowWindow(SW_SHOWMAXIMIZED);
// 获取全局绘图句柄
gdc=GetDC();//获得临时DC
CRect rect;
this->GetWindowRect(&rect);
my_dc=new CDC;
my_dc->CreateCompatibleDC(gdc); // 建立与dc兼容的DC
my_bitmap=new CBitmap; // 申明CBitmap位图对象
my_bitmap->CreateCompatibleBitmap(gdc,rect.right-rect.left,rect.bottom-rect.top); //
my_dc->SelectObject(my_bitmap);
op_dc=new CDC;
op_dc->CreateCompatibleDC(gdc); // 建立与dc兼容的DC
op_bitmap=new CBitmap; // 申明CBitmap位图对象
op_bitmap->CreateCompatibleBitmap(gdc,rect.right-rect.left,rect.bottom-rect.top); //
op_dc->SelectObject(op_bitmap);
bg_dc=new CDC; // 申明内存DC
bg_dc->CreateCompatibleDC(gdc); // 建立与dc兼容的DC
bg_bitmap=new CBitmap; // 申明CBitmap位图对象
bg_bitmap->CreateCompatibleBitmap(gdc,rect.right-rect.left,rect.bottom-rect.top); //
bg_dc->SelectObject(bg_bitmap);
bg_bitmap->m_hObject=(HBITMAP)::LoadImage(NULL,"image/bg.bmp",IMAGE_BITMAP,rect.right-rect.left,rect.bottom-rect.top,LR_LOADFROMFILE);// 加载位图
m_sta.MoveWindow(tss.window_k-79,20,60,20); //移动按钮到指定位置
m_5.MoveWindow(tss.window_k-79,50,60,20); //移动按钮到指定位置
m_1.MoveWindow(tss.window_k-79,80,60,20); //移动按钮到指定位置
m_2.MoveWindow(tss.window_k-79,110,60,20); //移动按钮到指定位置
m_3.MoveWindow(tss.window_k-79,140,60,20); //移动按钮到指定位置
m_4.MoveWindow(tss.window_k-79,170,60,20); //移动按钮到指定位置
m_6.MoveWindow(tss.window_k-79,200,60,20); //移动按钮到指定位置
m_7.MoveWindow(tss.window_k-79,230,60,20); //移动按钮到指定位置
m_12.MoveWindow(tss.window_k-79,260,60,20); //移动按钮到指定位置
m_13.MoveWindow(tss.window_k-79,290,60,20); //移动按钮到指定位置
m_14.MoveWindow(tss.window_k-79,320,60,20); //移动按钮到指定位置
m_15.MoveWindow(tss.window_k-79,350,60,20); //移动按钮到指定位置
m_16.MoveWindow(tss.window_k-79,380,60,20); //移动按钮到指定位置
m_8.MoveWindow(tss.window_k-79,410,60,20); //移动按钮到指定位置
m_9.MoveWindow(tss.window_k-79,428,60,15); //移动按钮到指定位置
m_10.MoveWindow(tss.window_k-79,458,60,20); //移动按钮到指定位置
m_11.MoveWindow(tss.window_k-79,476,60,15); //移动按钮到指定位置
SetBg();
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CwenDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CwenDlg::OnPaint()
{
/*
*/ CRect rect;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -