MFC组件的三种实例方法

发布时间 2023-08-09 21:34:54作者: IceArrow

 

一、直接拖放到资源对话框内,代码中按控件方式获取其指针,然后正常调用,这种方式最为稳妥,后续两种方式特定情形下,容易出现资源管理问题而卡死

  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);