CWnd m_wmp;
m_wmp.CreateControl(。。。。);
LPUNKNOWN lpUnknown = m_wmp.GetControlUnknown();
LPDISPATCH lpDispatch;
lpUnknown->QueryInterface(IID_IDispatch, (void**)&lpDispatch);
获得句柄的方法就是用GetDlgItem(...),这样可以用获得的句柄来进行窗口的操作。
CWMPPlayer4是从COleDispatchDriver继承过来的。对于COleDispatchDriver对象,其所有的属性以及方法绑定于其中的COleDispatchDriver::m_lpDispatch成员,即依附于COleDispatchDriver的IDispatch interface,而IDispatch是从IUnknown继承来的。
CWnd中有这样一个方法LPUNKNOWN GetControlUnknown( ),这就是CWnd中包含的OLE控件。使用COleDispatchDriver的COleDispatchDriver::AttachDispatch(LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE)将这个从CWnd获得的IUnknow对象依附于COleDispathcDriver即可。