1 新建ATL工程
2 添加一个Class
Visual C++ -> ATL -> COM
命名为TestClass
3 用ClassView添加函数Func1,(不是在TestClass类中添加函数,而是在接口ITestClass添加,只有这样,调用它的dll才能看到这个COM里边的函数)
4 OCX完成。
5 新建MFC DLL,用来调用上面COM中的函数Func1
6 在这个mfc项目添加Class, Visual C++ ->MFC->TypeLib的MFC Class
在File选项中找到前面编译生成的.dll文件(路径为Solution根目录下Debug里)
7 调用COM里的函数之前,需要实例化对象,
CoInitialize(NULL);
CDPINCOMCCO0 cdpin0;
CLSID clsid = cdpin0.GetClsid();
//CLSIDFromProgID(OLESTR("testAtl_ocx.MyCom"), &clsid);
//CLSIDFromString(_T("{e42436e8-fecb-4b84-81f5-86a4197bb366}"), &clsid);
CComPtr<_DPINCOMCCO> pGetRes; //_DPINCOMCCO为接口名
pGetRes.CoCreateInstance(clsid);
pGetRes->CheckHealth(1L); // CheckHealth为COM中的类CDPINCOMCCO 里的函数
pGetRes.Release();
CoUninitialize();
8 在第6步中加载dll时,不能获取CLSID,可以选择Visual C++ ->MFC->ActiveX Control的MFC Class,会自动生成获取CLSID的代码。如果能看到OCX的源码,可以直接查看CLSID