【发布时间】:2023-03-20 04:15:02
【问题描述】:
我有一个用 C++ 6.0 编写的旧应用程序。此应用程序在制造环境中管理一些声音以用于警报目的。
现在我想进行一些修改并使用 Windows Media Player。我对 C++ 的了解有限。有点迷失在指针中......
这是我到目前为止所做的:
使用类向导将包装类添加到 wmplib.dll 并包含“wmp.h”。 在 .cpp 文件中。
IWMPPlayer *player = new IWMPPlayer();
//player.SetUrl("http://streampoint.radioio.com/streams/57/45ec8c85a2a8a/listen.pls");
player->SetEnabled(true);
player->SetUrl("C:\\tada.wav");
IWMPControls *pControls = new IWMPControls();
*pControls = player->GetControls();
pControls->play();
有什么建议吗?
谢谢
【问题讨论】:
-
在将
new的结果存储在普通指针中时应该小心,因为即使在函数中发生异常时手动确保调用delete也需要注意。有关详细信息,请参阅stackoverflow.com/questions/106508/…,或查看“资源获取即初始化”又名 RAII 是什么。但我真的不明白你的问题是什么。您是否遇到任何错误,或者您是在询问如何执行特定任务? -
感谢您的建议。我需要的只是打开播放器并播放声音(最终是来自互联网的流)。但我收到警告“警告:尝试使用 NULL m_lpDispatch 调用 Invoke!”执行 SetEnabled() 和 SetUrl() 时。 GetControls() 导致访问冲突。
-
什么是 C++ 6.0?我猜你的意思是 MS Visual C++ 6,又名 Visual Studio 98。我强烈建议不要在任何当前的 C++ 开发中使用它,包括学习用 C++ 编程。
-
是的,我的意思是 MS Visual Studio C++ 6。事实上,我更喜欢用 C# 开发,但我正在开发的程序是 MSVC++6 并且不可能迁移到 C#,短期而言.