id3在mfc中显示图片

时间:2013-01-07 12:56:51

标签: c++ visual-c++ mfc

我想写一个可以编辑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 Picture Control时,有人可以教我如何显示图片吗? 或者,是否还有其他方法可以做同样的事情? 对不起,我是MFC的新手。我的英语不是很好〜 谢谢!

2 个答案:

答案 0 :(得分:0)

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

m_stPicture.SetBitmap(SHLoadImageFile(imagefile));

答案 1 :(得分:0)

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