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即可。