CWavPlayerCtrl是控件
我建立app winzard,注册控件后生成接口类CWavPlayer
建立窗口类ActiveXDlg包含CWavPlayer的对象m_WavPlayer
我的目的是在不改动控件的前提下动态的设置接口参数使声码器播放我需要的文件
但现在的问题在于控件的操作在ActiveXDlg::ActiveXDlg后ActiveXDlg::OnInitDialog之前就进行了
那么我需要怎么样才能保证控件在接口参数设置在控件操作前就完成
ActiveXDlg必须生成对象才可能调用接口,但是CWavPlayer一旦有对象生成,就马上进行操作了
好像是不可能完成的任务
由衷的请教各位
我建立app winzard,注册控件后生成接口类CWavPlayer
建立窗口类ActiveXDlg包含CWavPlayer的对象m_WavPlayer
我的目的是在不改动控件的前提下动态的设置接口参数使声码器播放我需要的文件
但现在的问题在于控件的操作在ActiveXDlg::ActiveXDlg后ActiveXDlg::OnInitDialog之前就进行了
那么我需要怎么样才能保证控件在接口参数设置在控件操作前就完成
ActiveXDlg必须生成对象才可能调用接口,但是CWavPlayer一旦有对象生成,就马上进行操作了
好像是不可能完成的任务
由衷的请教各位
解决方案 »
- 关于退格键的疑惑
- Activex控件死活注册不上有可能是什么原因?请帮忙分析一下
- 异形窗口的缩放
- 帮帮我吧UPD问题
- 实现超链接的一段代码,其中有不解之处
- 看看50兆的免费空间吧
- 视频多向中实时访问文件的问题
- 请问如何在基于对话框模式的应用程序中加入菜单的快捷键?
- 现在的windows系统字体都是变宽(variable-pitch)字体,如果我想使用早期windows的等宽(fixed-pitch)字体,该怎么办?
- VS版本间不兼容的相关问题
- 请问,哪里有Microsoft Platform SDK February 2003可下载,我的程序里SOCKADDR_STORAGE不能识别,多谢
- 为什么找不到WM_SYSCOMMAND消息呢?
LPUNKNOWN pIUnk = wnd.GetControlUnknown();
IWavPlayer *pIWav = NULL;
HRESULT hr = pIUnk->QueryInterface(__uuidof(CWavPlayer),&pIWav);
if(FAILED(hr))
{
pIUnk->Release();
}
.....//处理你的代码
不过这段代码应该加到哪儿?
CWavPlayer,ActiveXDlg, or CMyWavPlayerView
最好是具体到函数级
另外这段代码的目的是什么
代码的目的获取控件的接口对象然后设置你所想的!
稍作修改如下
CWnd *wnd = GetDlgItem(IDC_WAVPLAYERCTRL1);
LPUNKNOWN pIUnk = wnd->GetControlUnknown();
CWavPlayer *pWav = NULL;
HRESULT hr = pIUnk->QueryInterface(__uuidof(CWavPlayer),&pWav);
if(FAILED(hr))
{
pIUnk->Release();
}
出现如下错误
error C2787: 'CWavPlayer' : no GUID has been associated with this object
请问这是不是说需要控件接口没定义?msdn上说iid [in] The identifier of the interface being requested.但我看到控件上源码上好像有接口
onst IID BASED_CODE IID_DWavPlayer =
{ 0x6242d748, 0xcf96, 0x11d6, { 0xab, 0, 0, 0x80, 0xc7, 0xcf, 0x22, 0x27 } };
const IID BASED_CODE IID_DWavPlayerEvents =
{ 0x6242d749, 0xcf96, 0x11d6, { 0xab, 0, 0, 0x80, 0xc7, 0xcf, 0x22, 0x27 } };
很疑惑,不知道怎么解决
请赐教,感谢!!