万星星
一个吃软饭的男人!!!!!我只想写程序####
师夷之技以制夷 吾尝终日而思矣,不如须臾之所学也
喝碗孟婆汤,踏过奈何桥,涅槃
I've been programming since I was 21. Started with C++, looked at Java, keen on Visual Basic and Visual C++, thinking about .NET and C#.^_^,very ridiculous.
posts - 130,  comments - 778,  trackbacks - 0
问题是这样产生的:建立一个MFC应用程序,加入ATL支持,并加入一个ATL对象,然后在程序中创建如下
CComPtr<IMath>    spMath;
    HRESULT            hr        
= NOERROR;
    hr 
= spMath.CoCreateInstance(L"COMInMFC.Math.1");
    
if(SUCCEEDED(hr))
    
{
        spMath.Release();
    }
结果总是返回“无效的字符串”。我直接把COM对象new出来,再QueryInterface是没有问题的,很明显注册表没有注册正确。稀里哗啦修改一通,还是不正确。转到VS2003、VS2005按照类似做法完全没有问题,于是我开始怀疑难道我的VC6 IDE有问题?因为我以前从来没有遇到类似问题,印象中还模糊记得以前做过类似操作没有这样的问题。转到笔记本上再试一试,还是老样子。唉!先放一下,这是昨天的问题哈!
昨天晚上睡觉还惦记这这个问题,今天早上起床,胸口闷,还是不甘心,一定找出问题所在。打开工程,直接找写注册表的位置,发现拉,在InitATL函数中有这样一段:
LPTSTR lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT
    TCHAR szTokens[] = _T("-/");

    BOOL bRun 
= TRUE;
    LPCTSTR lpszToken 
= _Module.FindOneOf(lpCmdLine, szTokens);
    
while (lpszToken != NULL)
    
{
        
if (lstrcmpi(lpszToken, _T("UnregServer"))==0)
        
{
            _Module.UpdateRegistryFromResource(IDR_COMINMFC, FALSE);
            _Module.UnregisterServer(TRUE); 
//TRUE means typelib is unreg'd
            bRun = FALSE;
            
break;
        }

        
if (lstrcmpi(lpszToken, _T("RegServer"))==0)
        
{
            _Module.UpdateRegistryFromResource(IDR_COMINMFC, TRUE);
            _Module.RegisterServer(TRUE);
            bRun 
= FALSE;
            
break;
        }

        lpszToken 
= _Module.FindOneOf(lpszToken, szTokens);
    }
原来要注册一下啊,赶紧命令行执行一下:
D:\VC\Automation\COMInMFC\Debug\COMInMFC.exe /RegServer
然后创建对象,成功了,终于体会到:世上无难事,只怕有心人!
posted on 2006-09-01 08:18 万连文 阅读(662) 评论(1)  编辑 收藏 引用 所属分类: MFC

FeedBack:
# re: VC6的MFC应用中集成COM的一个小问题
2006-09-07 19:48 | pdkui
MFC里添加了ATL对象,在同一个工程里的话,可以在ATL对象加一个静态函数:CreateInstance(),直接返回一个指针。当然,不在一个工程里就另当别论了。  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:



简历下载
联系我

<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(35)

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜