|
拼图游戏
本例实现了拼图游戏,运行程序,在“图像”菜单中可以选择程序中自带的图片或者是用户自己选择图片,在“游戏”菜单中可以选择游戏的级别,单击“图像”→“图02”,单击“游戏”→“开始游戏”,就可以进行游戏了,运行程序效果如图1所示。
关键技术
本例使用代码创建一定数量的Static控件,然后通过StretchBlt函数把图片分块画到Static控件上,最后通过WM_LBUTTONDOWN和WM_LBUTTONUP事件控制Static控件的移动。
设计过程
(1)新建一个基于对话框的应用程序,将窗体标题改为拼图游戏。
(2)向窗体中添加一个Static控件,用来控制对话框的伸缩显示。
(3)向资源中添加一个菜单,并为菜单添加相应的节点。
(4)在OnInitDialog函数中创建Static控件并设计状态栏,代码如下。
::GetCurrentDirectory(256,buf); //获取程序根目录路径
m_bExpand = false;
m_win = false;
UINT array[5];
for (int i=0;i<5;i++)
{
array = 1001+i;
}
m_statusbar.Create(this); //创建状态栏窗口
m_statusbar.SetIndicators(array,sizeof(array)/sizeof(UINT)); //添加面板
for (int n = 0; n<4;n++)
{
m_statusbar.SetPaneInfo(n,array[n],0,155);//设置面板宽度
}
m_statusbar.SetPaneInfo(3,array[3],0,700);
CTime time;
time=time.GetCurrentTime();
CString stime;
stime.Format("当前时间:%s",time.Format("%y-%m-%d %H:%M:%S"));
m_statusbar.SetPaneText(0,stime);
tm = 0;
Gtime.Format("游戏时间:%d",tm);
m_statusbar.SetPaneText(1,Gtime);
m_statusbar.SetPaneText(2,"加油!");
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
CRect rcDlg, rcMarker;
GetWindowRect(rcDlg);
m_nExpandedWidth = rcDlg.Width();
GetDlgItem(IDC_COMPART)->GetWindowRect(rcMarker);
m_nNormalWidth = (rcMarker.left - rcDlg.left);
Display();
for(int j=0;j<64;j++)
{
Picture[j].Create("",WS_CHILD|WS_CLIPSIBLINGS|WS_EX_TOOLWINDOW|WS_BORDER,
CRect(0,0,48,48),this,1200+i);
}
秘笈心法
心法领悟591:使用Draw3dRect方法绘制按钮
CDC类的Draw3dRect方法经常用在控件自绘上,使用该方法绘制一个矩形区域,由于矩形区域边线颜色不同,很容易形成立体效果,例如将该方法的最后两个参数设置为RGB(255,255,255)和REG(128,128,128),就可以形成按钮效果。还可以利用该方法绘制凸起或凹陷的线条。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|