bool ShowMyName(BSTR *pVal)
{
      MessageBox(0,NULL,LPCSTR(pVal),MB_OK);
      return true;
}

解决方案 »

  1.   

    不好意思!一时大意,写错了,应该是:
    bool ShowMyName(BSTR *pVal)
    {
          MessageBox(0,NULL,(LPCSTR)pVal,MB_OK);
          return true;
      

  2.   

    你这样调用:
    ShowMyName((BSTR *)"dfsdf");
      

  3.   

    全部代码如下:
    bool ShowMyName(BSTR *pVal)
    {
          MessageBox(0,NULL,(LPCSTR)pVal,MB_OK);
          return true;
    }
    调用:
    ShowMyName((BSTR *)"你的名字!");
      

  4.   

    但是Activex Dll应该都是通用的啊
      

  5.   

    USES_CONVERSION;
    LPTSTR pbuf=OLE2T(*pVal);
      

  6.   

    谢谢kimryo
    谢谢jebelmar再问个问题,我在vc里做的Dll如何才能支持CreateObject
      

  7.   

    接口从IDispatch派生就支持createobject.
      

  8.   

    假如是用MFC的话,利用CString可以给你在字符串处理方面带来不少方便的。
    bool ShowMyName(BSTR *pVal)
    {
          CString strVal((LPCWSTR) (*pVal));
          //这样你就可以利用CString提供的成员函数进行一些其他的处理了:)
          MessageBox(0,NULL,strVal,MB_OK);
          return true;
      

  9.   

    强烈不推荐在ATL工程中用MFC。要用最好是STL.
      

  10.   

    我觉得很奇怪
    我想在vc里创建Activex Dll工程
    但是在Files->New->Projects里只有Atl com appwizard
    所以我就先用了atl
    哪么如何创建一个非atl的activex Dll
      

  11.   

    可以用MFC的ActiveX Dll,不过用MFC写COM腻烦,ATL的出现就是为了解决MFC在COM编写方面的不足的。
      

  12.   

    MFC写COM连IDL都要自己写,我看过一个老外用MFC写的COM组件,真是%@%@%*^%$^$%.....
      

  13.   

    但是我在菜单里没有看到这种Project类型,怎么样新建这样的工程啊,新建一个空的就可以了
      

  14.   

    Atl的好处是很多,mfc也有很多好处,各有所长拉
      

  15.   

    如果你没有什么custom的wizard的话,在projects的第九项就是。其实建立好是一个一般的DLL,需要你自己改。
      

  16.   

    不会吧,要自己写一堆 DllCanUnloadNow....谢谢各位