佚名通过本文主要向大家介绍了7tav.com视频 杂类,7tav.com杂类,检索com类工厂中clsid,com类工厂中clsid为,com类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: COM的包装类该怎么使用
描述:
CCOM_IDL_connect类
CCOM_IDL_connect IDL; //定义类对象
IDL.CreateObject(0,_variant_t(0),_variant_t(0));
IDL.ExecuteString(_T(".Compile 'C:\\Documents and Settings\\My Documents\\Visual Studio 2005\\Fx_Batch.pro'"));
IDL.ExecuteString(_T("Fx_Batch"));
结果它啥反应也没有,是不是我没有实例化类,看了下面一段话,也没看明白
// COM 初始化在 InitInstance()中调用了 AfxOleInit()
IDispSimple spDisp; // 包装类的一个对象
if( !spDisp.CreateDispatch( _T("Simple6.DispSimple.1") ) ) // 启动组件
{
AfxMessageBox( _T("启动失败。组件注册了吗?COM 初始化了吗?") );
return;
}
CString str = spDisp.Upper( _T("hello") ); // 调用转换大写的函数
AfxMessageBox( str ); // 显示一下结果
spDisp.ReleaseDispatch();
它这个Simple6.DispSimple.1是怎么来的?看了很久也不明白。我对COM不了解,希望高手帮帮忙,指点指点,我应该怎么些?在此非常感谢了
解决方案1:
他们两个的作用是一样的,都是用来标识组件的;如果你注册了组件,progid和classid都可以在注册表中找到 解决方案2:
描述:
本帖最后由 RSyaoxin 于 2010-06-14 17:28:44 编辑
我有一个COM组件的dll文件,我把它弄成了包装类,生成了一个CCOM_IDL_connect类
CCOM_IDL_connect IDL; //定义类对象
IDL.CreateObject(0,_variant_t(0),_variant_t(0));
IDL.ExecuteString(_T(".Compile 'C:\\Documents and Settings\\My Documents\\Visual Studio 2005\\Fx_Batch.pro'"));
IDL.ExecuteString(_T("Fx_Batch"));
结果它啥反应也没有,是不是我没有实例化类,看了下面一段话,也没看明白
// COM 初始化在 InitInstance()中调用了 AfxOleInit()
IDispSimple spDisp; // 包装类的一个对象
if( !spDisp.CreateDispatch( _T("Simple6.DispSimple.1") ) ) // 启动组件
{
AfxMessageBox( _T("启动失败。组件注册了吗?COM 初始化了吗?") );
return;
}
CString str = spDisp.Upper( _T("hello") ); // 调用转换大写的函数
AfxMessageBox( str ); // 显示一下结果
spDisp.ReleaseDispatch();
它这个Simple6.DispSimple.1是怎么来的?看了很久也不明白。我对COM不了解,希望高手帮帮忙,指点指点,我应该怎么些?在此非常感谢了
解决方案1:
他们两个的作用是一样的,都是用来标识组件的;如果你注册了组件,progid和classid都可以在注册表中找到 解决方案2:
http://topic.csdn.net/t/20050610/09/4072450.html
lz参考这个
对COM的DLL用#import指令,可以生产智能类的
解决方案4:这个市progid,用它就不用记classid了