请教一个问题,我想做一个VB能调用的MFC开发的ActiveX控件,功能是将VB的输入框中输入的字符串发送出去。我原来用VC直接做的在LINK中连接ws2_32.lib 然后加入了一个Sendnum.h和Sendnum.cpp主要是封装了一个发送函数SendData(char*,int),通过VC程序中输入字符串将其发送出去,已经试用了,可以用。现在想将功能做成控件供VB调用,在VB中输入字符串然后通过所做的控件发送。我现在已经想好了先建立一个属性--m_sendnum(CString类型)将VB输入的字符串赋给该变量,然后在OnSendnumChanged()函数中调用SendData(char*,int)函数将其发送出去。其他不用另外加入事件和方法了。大家认为这样是否可行,我对控件的了解很粗浅希望大家提出建议并详细解释。另外如果我用方法的话将VB输入的字符串赋给该方法的参数,在该方法函数中调用SendData()函数发送数据,是否可行,该方法是怎么被激活的,是否给参数赋值的时候该函数就调用了?

解决方案 »

  1.   

    vbhelp(vbhelp) :
    哥们我只是问个问题,你没事吧你?
    有谁可以给点建议谢谢!!
      

  2.   

    绝对可以!
    首先,打开VC,创建一个新的工程,使用“ATL COM AppWizard”,创建好之后,在ClassView中,右键点工程,选择“New ATL Object”,然后指定创建Simple Object,所有选项都默认。ClassView中,在你创建的ATL Object类下面有一个和类名称相同的接口,在接口上点右键,然后
    选择"Add Method",添好方法名称和参数点OK。参数用一个就够了,比如说:“BSTR bstrData”,方法名称为SendData。 OK了之后,在接口下会多出一个方法,打开CPP文件,定位到方法,然后加入你的SendData调用代码。搞定之后,编译链接,如果没有错误,将生成DLL文件,并且已经注册好。打开VB,在工程中添加引用,引用这个dll文件,然后在VB中就可以使用你用ATL创建的对象了。比如说你的ATL类名叫 CImplDataSender(创建ATL对象的时候,你指定的是ImplDataSender,Wizard会自动为你添加"C"前缀),在VB中这样调用
    dim oDataSender as new ImplDataSender
    ImplDataSender.SendData "Hello world"这样就搞定了。如果你想错小dll文件的尺寸,推荐你不要链接mfc类库,即不要用CString,自己直接操纵BSTR就可以了。
      

  3.   

    没问题,就用MFC吧,知道怎么用WIZARD就可以了。其实不需要控件,做个一般的COM就解决了,效率会比较高的,反正又不需要UI。
      

  4.   

    用方法带CSTRING类型的参数怎么选择参数类型,怎么用啊,是用BSTR*类型的参数吗