【问题标题】:id3 show picture in mfcid3在mfc中显示图片
【发布时间】:2013-01-07 12:56:51
【问题描述】:

我想写一个可以编辑 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的新手。而且我的英语不太好~ 谢谢!!

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      m_stPicture.SetBitmap(SHLoadImageFile(imagefile));
      

      【讨论】:

        猜你喜欢
        • 2012-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多