一、直接拖放到资源对话框内,代码中按控件方式获取其指针,然后正常调用,这种方式最为稳妥,后续两种方式特定情形下,容易出现资源管理问题而卡死
hr = m_hWnd->GetDlgControl( IDC, IID_XXX, (void**)&m_spCtrl);
二、使用容器的方式创建组件
CAxWindow m_Win;
RECT rc = { 0, 0, 800, 600 };
m_Win.Create( m_hWnd, &rc, NULL, WS_CHILD | WS_VISIBLE, 0, IDC_XXX);
CoCreateInstance( CLSID_XXX, /*(IDispatch*)m_pWnd*/ NULL, CLSCTX_ALL, IID_XXX, (void**)&m_spCtrl);
m_Win.AttachControl(m_spCtrl, NULL);
三、模块方式
CComModule m_Module;
_pAtlModule = &m_Module;
hr = CoCreateInstance(CLSID_XXX, NULL, CLSCTX_ALL, IID_XXX, (void**)&m_spCtrl);
hr = AtlAxAttachControl(m_spCtrl, m_hWnd, NULL);