MFC静态框图片轮播(利用添加静态框的变量)

一、设置对话框基本元素

入下图所示,可以添加static Text,在对话框中。我在这里设置了三个按钮,分别对应如下:
在这里插入图片描述

二、添加相应控件的变量并初始化

1、对话框变量添加操作

1)单击控件,右击鼠标,如下图所示:
在这里插入图片描述

2)按照上一步,分别对三个按钮进行添加变量,添加的变量入下图所示:
在这里插入图片描述
注!:所有变量设置参数注意事项
在这里插入图片描述

2、Dlg类中添加成员变量

1)打开类视图,入下图所示:
在这里插入图片描述
2)在该类中添加成员变量:
在这里插入图片描述
3)添加如下变量:

	int m_index;
	int m_w;
	int m_h;
	bool m_isAuto;

3、初始化数据

在Dlg.cpp文件里如下函数BOOL CMFC_Photo_rotationDlg::OnInitDialog()添加代码:

// TODO: 在此添加额外的初始化代码
    //设置适合位图的风格样式
	//SS_CENTERIMAGE居中
	//SS_BITMAP设定bmp格式照片
	m_bmp.ModifyStyle(0xf,SS_BITMAP | SS_CENTERIMAGE);
	//获取静态控件大小
	CRect rect;
	m_bmp.GetWindowRect(&rect);
	m_w = rect.Width();
	m_h = rect.Height();
	//设置图片
	#define HBMP(filePath, width, height)(HBITMAP)LoadImage(AfxGetInstanceHandle(), filePath, IMAGE_BITMAP, width, height, LR_LOADFROMFILE | LR_CREATEDIBSECTION)

	m_index = 1;
	CString path;
	path.Format(TEXT("../MFC_Photo_rotation/res/bmp/%d.bmp"),m_index);

	m_bmp.SetBitmap(HBMP(path,m_w,m_h));

	m_isAuto = true;

4、按钮控件点击事件处理

1)在进行按钮控件处理的时候,还设置了定时器,因为static Text图片轮播需要,如下代码所示:
在对话框中双击按钮控件,如下:

//上一张图片
void CMFC_Photo_rotationDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	m_index--;
	if(m_index < 1)
	{
		m_index = 5;
	}
	CString path;
	path.Format(TEXT("../MFC_Photo_rotation/res/bmp/%d.bmp"),m_index);

	m_bmp.SetBitmap(HBMP(path,m_w,m_h));
}

//自动
void CMFC_Photo_rotationDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	if(true == m_isAuto)     //自动播放按钮
	{
		//上一张下一张按钮变灰
		m_buttonPre.EnableWindow(FALSE);
		m_buttonNext.EnableWindow(FALSE);
		//自动->暂停
		m_buttonAuton.SetWindowTextW(TEXT("暂停"));
		//启动定时器
		SetTimer(1,1000,NULL);
	}
	else     //暂停按钮
	{
		//上一张下一张按钮恢复
		m_buttonPre.EnableWindow(TRUE);
		m_buttonNext.EnableWindow(TRUE);
		//暂停->自动
		m_buttonAuton.SetWindowTextW(TEXT("自动"));
		//关闭定时器
		KillTimer(1);
	}

	m_isAuto = !m_isAuto;

}

//下一张
void CMFC_Photo_rotationDlg::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	m_index++;
	if(m_index>5)
	{
		m_index = 1;
	}
	CString path;
	path.Format(TEXT("../MFC_Photo_rotation/res/bmp/%d.bmp"),m_index);

	m_bmp.SetBitmap(HBMP(path,m_w,m_h));
}

注意: 这里的图片路径在文件中的这个位置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这些图片位置路径,可以根据那个自由去调整,也就是代码运行试一试,我个人喜欢把图片放在这个位置!

2)设置定时器:
首先:
在这里插入图片描述
其次点击消息:
在这里插入图片描述
最后添加函数OnTimer()
在这里插入图片描述
成功显示Dlg.cpp文件代码如下:

//定时器处理函数
void CMFC_Photo_rotationDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	//按下一长功能
	OnBnClickedButton3();
	CDialogEx::OnTimer(nIDEvent);
}

三、结果显示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、文件包如下

https://download.csdn.net/download/Nuky_/86097622

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nutkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值