📄 pictur~1.cpp
字号:
if(Easy)con=2;
else if(!Easy) con=3;
for(int i=0;i<=con;i++)
{
CDC*pDC=new CDC;
CClientDC dc(&m_Image[i]);
pDC->CreateCompatibleDC(&dc);
pDC->SelectObject(picture);
dc.BitBlt(0,0,x,y,pDC,x*i,0,SRCCOPY);
if(Style3d)
dc.Draw3dRect(rect,RGB(0,0,0),RGB(0,0,0));
delete pDC;
UpdateWindow();
}
for(int j=0;j<=con;j++)
{
CClientDC dc(&m_Image[con+j]);
CDC *pDC=new CDC;
pDC->CreateCompatibleDC(&dc);
pDC->SelectObject(picture);
dc.BitBlt(0,0,x,y,pDC,x*j,y,SRCCOPY);
if(Style3d)
dc.DrawEdge(rect,EDGE_RAISED,BF_RECT);
else if(!Style3d)
dc.Draw3dRect(rect,RGB(0,0,0),RGB(0,0,0));
delete pDC;
}
for(int k=0;k<=con;k++)
{
CClientDC dc(&m_Image[(con+1)*3+k]);
CDC *pDC=new CDC;
pDC->CreateCompatibleDC(&dc);
pDC->SelectObject(picture);
dc.BitBlt(0,0,x,y,pDC,x*k,2*y,SRCCOPY);
if(Style3d)
dc.DrawEdge(rect,EDGE_RAISED,BF_RECT);
else if(!Style3d)
dc.Draw3dRect(rect,RGB(0,0,0),RGB(0,0,0));
delete pDC;
}
if(!Easy)
for(int l=0;l<=3;l++)
{
CClientDC dc(&m_Image[l+12]);
CDC *pDC=new CDC;
pDC->CreateCompatibleDC(&dc);
pDC->SelectObject(picture);
dc.BitBlt(0,0,x,y,pDC,x*l,3*y,SRCCOPY);
if(Style3d)
dc.DrawEdge(rect,EDGE_RAISED,BF_RECT);
else if(!Style3d)
dc.Draw3dRect(rect,RGB(0,0,0),RGB(0,0,0));
delete pDC;
}
if(!IsRnd)
{
pSubMenu=pMainMenu->GetSubMenu(0);
pSubMenu->EnableMenuItem(ID_HELP,MF_DISABLED|MF_GRAYED);
}
}
void CPictureGameDlg::On3d()
{
pSubMenu=pMainMenu->GetSubMenu(2);
pSubMenu->CheckMenuItem(ID_FLAT,MF_UNCHECKED);
pSubMenu->CheckMenuItem(ID_3D,MF_CHECKED);
Style3d=TRUE;
SetImage();
}
void CPictureGameDlg::OnFlat()
{
pSubMenu=pMainMenu->GetSubMenu(2);
pSubMenu->CheckMenuItem(ID_FLAT,MF_CHECKED);
pSubMenu->CheckMenuItem(ID_3D,MF_UNCHECKED);
Style3d=FALSE;
SetImage();
// TODO: Add your command handler code here
}
void CPictureGameDlg::MoveImage(int num)
{
int xnum,ynum,level;
if(Easy)
level=8;
else if(!Easy) level=15;
WINDOWPLACEMENT wpnum,wp15;
m_Image[level].GetWindowPlacement(&wp15);
m_Image[num].GetWindowPlacement(&wpnum);
xnum=wpnum.rcNormalPosition.left;
ynum=wpnum.rcNormalPosition.top;
if(num!=level)
if(wpnum.rcNormalPosition.top=wp15.rcNormalPosition.top
&&wpnum.rcNormalPosition.left==wp15.rcNormalPosition.left-x)
{
m_Image[num].SetWindowPos(NULL,xnum+x,ynum,0,0,SWP_NOSIZE);
m_Image[level].SetWindowPos(NULL,xnum,ynum,0,0,SWP_NOSIZE);
}
if(wpnum.rcNormalPosition.top==wp15.rcNormalPosition.top
&&wpnum.rcNormalPosition.left==wp15.rcNormalPosition.left+x)
{
m_Image[num].SetWindowPos(NULL,xnum-x,ynum,0,0,SWP_NOSIZE);
m_Image[level].SetWindowPos(NULL,xnum,ynum,0,0,SWP_NOSIZE);
}
if(wpnum.rcNormalPosition.left==wp15.rcNormalPosition.left
&&wpnum.rcNormalPosition.top==wp15.rcNormalPosition.top+y)
{
m_Image[num].SetWindowPos(NULL,xnum,ynum-y,0,0,SWP_NOSIZE);
m_Image[level].SetWindowPos(NULL,xnum,ynum,0,0,SWP_NOSIZE);
}
if(wpnum.rcNormalPosition.left==wp15.rcNormalPosition.left
&&wpnum.rcNormalPosition.top==wp15.rcNormalPosition.top-y)
{
m_Image[num].SetWindowPos(NULL,xnum,ynum+y,0,0,SWP_NOSIZE);
m_Image[level].SetWindowPos(NULL,xnum,ynum,0,0,SWP_NOSIZE);
}
}
BOOL CPictureGameDlg::IsWin()
{
WINDOWPLACEMENT wp;
int con,move;
int win=0;
if(IsLong) move=70;
else move=0;
if(Easy==TRUE) con=2;
else if(!Easy) con=3;
for(int a=0;a<=con;a++)
{
m_Image[a].GetWindowPlacement(&wp);
if(wp.rcNormalPosition.top==0&&wp.rcNormalPosition.left==a*x+move)
win+=1;
}
for(int b=0;b<=con;b++)
{
m_Image[con+1+b].GetWindowPlacement(&wp);
if(wp.rcNormalPosition.top==y&&wp.rcNormalPosition.left==x*b+move)
win+=1;
}
if(win<3)return FALSE;
for(int c=0;c<=con;c++)
{
m_Image[2*(con+1)+c].GetWindowPlacement(&wp);
if(wp.rcNormalPosition.top==2*y&&wp.rcNormalPosition.left==x*c+move)
win+=1;
}
if(win<5)return FALSE;
if(!Easy)
for(int d=0;d<=3;d++)
{
m_Image[12+d].GetWindowPlacement(&wp);
if(wp.rcNormalPosition.top==3*y&&wp.rcNormalPosition.left==x*d+move)
win+=1;
}
if(Easy==TRUE&&win==9)
{
m_Image[8].ShowWindow(SW_SHOW);
m_wndstatusBar.SetText("祝贺你,拼出来啦!",0,0);
return TRUE;
}
else if(!Easy&&win==16)
{
m_Image[8].ShowWindow(SW_SHOW);
m_Image[15].ShowWindow(SW_SHOW);
m_wndstatusBar.SetText("祝贺你,拼出来啦!",0,0);
return TRUE;
}
else return FALSE;
}
void CPictureGameDlg::OnStatic1()
{
if(IsRnd)
MoveImage(0);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic10()
{
if(IsRnd)
MoveImage(9);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic11()
{
if(IsRnd)
MoveImage(10);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic12()
{
if(IsRnd)
MoveImage(11);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic13()
{
if(IsRnd)
MoveImage(12);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic14()
{
if(IsRnd)
MoveImage(13);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic15()
{
if(IsRnd)
MoveImage(14);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic16()
{
if(IsRnd)
MoveImage(15);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic2()
{
if(IsRnd)
MoveImage(1);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic3()
{
if(IsRnd)
MoveImage(2);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic4()
{
if(IsRnd)
MoveImage(3);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic5()
{
if(IsRnd)
MoveImage(4);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic6()
{
if(IsRnd)
MoveImage(5);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic7()
{
if(IsRnd)
MoveImage(6);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic8()
{
if(IsRnd)
MoveImage(7);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnStatic9()
{
if(IsRnd)
MoveImage(8);
else Rnd();
if(IsWin())
CanCount=FALSE;
// TODO: Add your control notification handler code here
}
void CPictureGameDlg::OnForHelp()
{
ShowItem();
IsHelp=TRUE;
CDC *pkDC=new CDC;
if(!pkDC)
pkDC=new CDC;
if(pkDC) pkDC->DeleteDC();
SetPre();
}
void CPictureGameDlg::ShowItem()
{
INT count;
if(Easy) count=7;
else count=14;
if(!IsHelp)
{
GetDlgItem(IDC_ENDHELP)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_DLGABOUT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_PREVIEW)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_WIN)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_HIDE)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_RECT)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_VERSION)->ShowWindow(SW_SHOW);
for(int i=0;i<=count;i++)
m_Image[i].ShowWindow(SW_HIDE);
pSubMenu=pMainMenu->GetSubMenu(0);
pSubMenu->EnableMenuItem(ID_RESET,MF_DISABLED|MF_GRAYED);
pSubMenu->EnableMenuItem(ID_EASY,MF_DISABLED|MF_GRAYED);
pSubMenu->EnableMenuItem(ID_HARD,MF_DISABLED|MF_GRAYED);
pSubMenu->EnableMenuItem(ID_HELP,MF_DISABLED|MF_GRAYED);
pSubMenu=pMainMenu->GetSubMenu(1);
pSubMenu->EnableMenuItem(ID_PICTURE1,MF_DISABLED|MF_GRAYED);
pSubMenu->EnableMenuItem(ID_PICTURE2,MF_DISABLED|MF_GRAYED);
pSubMenu->EnableMenuItem(ID_PICTURE3,MF_DISABLED|MF_GRAYED);
pSubMenu->EnableMenuItem(ID_PICTURE4,MF_DISABLED|MF_GRAYED);
IsHelp=TRUE;
}
else if(IsHelp)
{
GetDlgItem(IDC_ENDHELP)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_DLGABOUT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_PREVIEW)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_WIN)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_HIDE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_RECT)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_VERSION)->ShowWindow(SW_HIDE);
for(int i=0;i<=count;i++)
m_Image[i].ShowWindow(SW_SHOW);
pSubMenu=pMainMenu->GetSubMenu(0);
pSubMenu->EnableMenuItem(ID_RESET,MF_ENABLED);
pSubMenu->EnableMenuItem(ID_EASY,MF_ENABLED);
pSubMenu->EnableMenuItem(ID_HARD,MF_ENABLED);
pSubMenu->EnableMenuItem(ID_HELP,MF_ENABLED);
pSubMenu=pMainMenu->GetSubMenu(1);
pSubMenu->EnableMenuItem(ID_PICTURE1,MF_ENABLED);
pSubMenu->EnableMenuItem(ID_PICTURE2,MF_ENABLED);
pSubMenu->EnableMenuItem(ID_PICTURE3,MF_ENABLED);
pSubMenu->EnableMenuItem(ID_PICTURE4,MF_ENABLED);
IsHelp=FALSE;
}
}
void CPictureGameDlg::SetPre()
{
BITMAP bm;
CStatic m_Preview;
CClientDC dc(&m_Preview);
CDC *pkDC;
pkDC->CreateCompatibleDC(&dc);
if(!Advan)
{
m_Preview.SetWindowPos(NULL,0,0,136,112,SWP_NOMOVE);
pkDC->SelectObject(bitmap);
bitmap.GetObject(sizeof(BITMAP),&bm);
dc.StretchBlt(0,0,136,112,pkDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
else if(Advan)
{
INT wei ,hei;
if(IsLong)
{
m_Preview.SetWindowPos(NULL,0,0,85,120,SWP_NOMOVE);
wei=85; hei=120;
}
else
{
wei=136; hei=112;
m_Preview.SetWindowPos(NULL,0,0,136,112,SWP_NOMOVE);
}
::GetObject(bitmap,sizeof(BITMAP),&bm);
pkDC->SelectObject(bitmap);
dc.StretchBlt(0,0,wei,hei,pkDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
}
}
void CPictureGameDlg::OnTimer(UINT nIDEvent)
{
nIDEvent=10;
CString m_temp="计时";
if(CanCount==TRUE)
count+=1;
TimeCon=m_temp+TimeCon+ "秒";
m_wndstatusBar.SetText(TimeCon,1,0);
// TODO: Add your message handler code here and/or call default
CDialog::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -