我用vc写了一个com组件通过AddOLEObject方法在EXCEL里嵌入了一个ATL控件,请问各位大侠,我怎么才能获得控件的指针. 通过OLEFormat的GetObject();获取的指针是空的,我怎么才能获取正确的值呢?
OLEFormatPtr olefmt = g_spShape->GetOLEFormat();
olefmt->Activate();
IDispatch *pDisp = olefmt->GetObject();
CComQIPtr <ISeal> spSeal(pDisp);
if (spSeal)
{
::MessageBox(NULL, _T("NOT NULL"), _T(""), MB_OK);
}
else
{
::MessageBox(NULL, _T("NULL"), _T(""), MB_OK);
}输出一直为NULL 
我该怎么办呢 ?麻烦各位大侠们赐教啊!

解决方案 »

  1.   

    我是一个初学者,我不知道在C语中如何新建文件,例如:
       main()
       {int i;
        char c;
        i='a';
        c=97;
        printf("%c,%d\n",c,c)}
    这个程序如何在C语言中去写去运行!
      

  2.   

    可以试用一下WorkSheet的OLEObject属性
    Set wordObj = Worksheets("Sheet1").OLEObjects(1)
    wordObj.Activate
    With wordObj.Object.Application.WordBasic
        .StartOfDocument
        .Insert "This is the beginning"
        .InsertPara
    End With
      

  3.   


    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    IDispatch *pDisp = spWorkSheet->OLEObjects(_variant_t(long(1)));
    if (NULL == pDisp)
    {
    ::MessageBox(NULL, _T("IDispatch NULL"), _T(""), MB_OK);
    } CComQIPtr <ISeal> spSeal(pDisp);这里直接抛异常
    if (spSeal)
    {
    ::MessageBox(NULL, _T("NOT NULL"), _T(""), MB_OK);
    }
    else
    {
    ::MessageBox(NULL, _T("NULL"), _T(""), MB_OK);
    }
      

  4.   

    再次顶一个 大侠们 帮帮忙啊[[email protected]][/email]
    如能提供示例将不胜感激