MFC里动态加载ATL复合控件问题
各位朋友,大侠,专家你们好,
小弟近日遇到了一个问题,网上百搜而不得其解,甚是郁闷。
问题场景如下:
我用ATL开发了一个Composite Control类型的复合控件,这个控件的接口有方法和事件函数。编译生成dll文件MySvr.dll,控件的CLSID和接口IID在一个头文件MySvr.h里被声明,现在,我想在MFC工程里在程序运行时加载这个控件,并对话框上将这个控件显示出来,代码如下:
//包含文件
#import "...\Debug\MySvr.dll"
#include "...\MySvr.h"
//OnInitDialog函数里
CAxWindow wndx;
CComPtr<IUnknown> punkCtrl;
CComQIPtr<IAtlComp> pIAtlComp; //接口
wndx.Create(*this,rc,_T(""),WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN);
wndx.CreateControlEx(L"{97FE8195-1F78-4C37-8D69-8D994005C221}",NULL,NULL,&punkCtrl);
pIAtlComp=punkCtrl;
这几句代码确实能让控件在对话框上显示出来,但是,当我点击一下这个控件的时候,整个应用程序就被挂起来,不动了,死掉了。这是为什么呢?