0

我想写一个可以编辑 MP3 标签的程序。而这个程序使用的是 MFC SDI。但是,现在,我遇到了一个问题。我已经使用 c++ Win32 控制台应用程序完成了我想要的一切。但我不知道如何用 MFC 在图片控制中显示我的 MP3 封面图片,

这是我在win32中的代码:

char* imagefile = "Cover.jpg";
ID3_Tag currentTag;
currentTag.Link("song.mp3",ID3TT_ID3V1 | ID3TT_LYRICS3V2 | ID3TT_MUSICMATCH);
ID3_Frame currentFrame;
currentFrame.SetID(ID3FID_PICTURE);
currentFrame.GetField(ID3FN_MIMETYPE)->Set("image/jpeg");
currentFrame.GetField(ID3FN_PICTURETYPE)->Set(11);
currentFrame.GetField(ID3FN_DATA)->FromFile(imagefile);
currentTag.AddFrame(currentFrame);
currentTag.Update();

那么,任何人都可以教我如何在使用 MFC 优化校准时显示图片吗?或者,有没有人有其他方法来做同样的事情?对不起,我是MFC的新手。而且我的英语不太好~谢谢!!

4

2 回答 2

0

使用SHLoadImageFile加载 jpeg 文件。该函数将返回可以传递给图片控件的 HBITMAP 结构。我假设您为此使用 CStatic。在这种情况下,只需调用

m_stPicture.SetBitmap(SHLoadImageFile(imagefile));
于 2013-01-08T04:36:20.787 回答
0

大概你会想从内存中的 id3 标签中提取图像,然后显示它。您所做的是使用 id3lib 的 API 提取二进制图像数据(我使用它的时间太长了,我不知道该怎么做),然后使用 CBitmap 解码图像(查找 MSDN 中的函数)然后使用 CStatic 及其 SetBitmap() 函数来设置要在控件中显示的位图。现在,CStatic 很可能不会以您想要的方式显示它,因为 CStatic 非常有限。然后你需要做的是编写你自己的控件,在其中覆盖 OnPaint(),从 CBitmap 中获得一个 DC 和 BitBlt 或 StretchBlt 到 DC。在 codeproject.com 上查看有关如何显示图像和如何制作自定义控件的示例 - 代码太多,无法在此处发表评论。

于 2013-01-08T16:39:26.723 回答