给MFC添加图片,动图,添加背景音乐(打包大放送)

版权声明:所有版权归作者她的吻让他,转载请标明出处. https://blog.csdn.net/qq_37059136/article/details/83068887

最近突然有了一种想用MFC做贺卡的想法,做成一个.exe程序,让被祝贺的人可以用电脑在任何位置打开观看,这就要求所使用资源必须添加至MFC工程,下面的方法都是本人测试过的,希望对你有所帮助呦!

1添加图片

MFC只支持添加256色bmp格式的图片,如果你没有bmp格式的图片,可以从该链接下载256色bmp图,当然你也可以用windows自带的画图将其他格式图片转化为256色bmp图

首先你要添加图片控件

修改该控件的属性

然后在资源视图中添加资源

选择bitmap,导入,然后选择你要添加的图片即可

在图片控件的属性页面杂项中的image中选择你刚添加的图片的ID就可以了

给MFC添加图片的误区就是MFC支持的图片格式是256色bmp图,注意,其他格式的图片是添加不进去的

2添加GIF动图

给MFC添加GIF动图其实才是比较有困难的,因为你几乎在网上找到的方法都是互抄的,根本不行!我查了两个多小时百度才在一篇较老的博客中看到正确方法

首先还是添加图片控件啦

然后修改图片控件属性

这里就要用到图片控件的ID了,你可以自己设置一个ID

右击图片控件,给图片控件添加Cstatic变量,变量名自己取一个,我用的是m_ljlPicture

到这里关于图片控件的内容就结束了

本人使用的显示加载GIF动图的方法是使用第三方函数pictureEx.h和pictureEx.cpppictureEx下载

将.h跟.cpp添加至MFC项目,并在你要显示动图的对话框.h中包含头文件pictureEx.h

上面已经给图片控件添加了Cstatic变量,下面将其类型改为CPictureEx m_ljlPicture; (在哪个对话框中添加的变量就去相应的.h中修改)

然后在对话框初始函数:OnInitDialog()中添加如下语句

if (m_ljlPicture.Load(MAKEINTRESOURCE(IDR_GIF2),_T("gif")))
        m_ljlPicture.Draw(); 

到这里代码就结束了,下面给MFC工程添加GIF动图资源

由于MFC本身不支持gif类型的资源,因此在资源视图添加资源时需要自定义一个类型gif

然后右击"gif"这个筛选器,选择插入gif,这时会出来一个空的文件

我这里的就是IDR_GIF3,这个是干嘛用的呢,由于直接添加GIF是不行的,因此才使用这种方法,在空白动图文件中粘贴原动图文件的二进制数据

在解决方案资源管理器界面找到资源文件筛选器,并将你要添加的动图添加进去,具体操作是右击资源文件->添加->现有项,选择你要添加的GIF图gif图下载

右击你添加的gif图,选择打开方式->二进制编辑器

将二进制数据拷贝到gif筛选器中的空文件中

这是我已经添加好的gif动图

至此给MFC项目添加GIF动图就完美结束了

(if (m_ljlPicture.Load(MAKEINTRESOURCE(IDR_GIF2),_T("gif")))  m_ljlPicture.Draw();中 IDR_GIF2是你动图的ID)

三添加背景音乐

添加背景音乐就比较简单了

值得注意的是MFC本身只支持WAV格式的音频格式,将要添加的音频转换成WAV格式WAV格式音乐<初恋>下载

可以使用转换器转换,下载迅捷视频转换器就可以转换

在资源视图中直接导入你的WAV格式音乐,MFC会自动新建筛选器"WAVE"

在你要播放背景音乐的地方将这些都加上

#include "resource.h"
#include <Windows.h>
#include <iostream>
#include "string.h"
#include <process.h> 
#include<iomanip>
#include <MMSystem.h>
#pragma comment (lib,"Winmm.lib");

1、在你要播放的对话框:OnInitDialog()中添加

PlaySound((LPCTSTR)IDR_WAVE1, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);

2、通过按钮触发事件来播放,我做的是按钮可以打开属性卡,然后播放背景音乐

在按钮触发事件中添加

HANDLE handle = (HANDLE)_beginthreadex(NULL, 0, ThreadFun, NULL, 0, NULL); 

    CloseHandle(handle); //释放线程资源

我的线程函数是

unsigned int __stdcall ThreadFun(void *)
{

    //MessageBox(NULL,_T("开始播放音乐"),_T("提示"),MB_OKCANCEL);
    PlaySound(MAKEINTRESOURCE(IDR_WAVE1),AfxGetResourceHandle(),SND_ASYNC|SND_RESOURCE|SND_NODEFAULT|SND_LOOP);
  

    _endthreadex(0);
    return 0;

}

这样可以让主进程弹出对话框的同时播放音乐

至此给MFC添加播放背景音乐完成

猜你喜欢

转载自blog.csdn.net/qq_37059136/article/details/83068887