⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pictur~1.cpp

📁 visual c++ 时尚编程百例 全部源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:

		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 + -