我用vc写了一个Activex控件,该控件中有一个成员函数是取得该控件的窗口句柄(this->m_Hwnd),用VC测试可以成功,但用VB测试则取不到该控件的句柄,代码如下
void CMyPrtOcxCtrl::DoPrintPreview() 
{
PrnInfo.hWnd = (long)(this->m_hWnd);
}
在VB中调用该控件执行到该函数时,this->m_hWnd总是为0x00000000,在VC中测试this->m_hWnd有具体的值

解决方案 »

  1.   

    更正一下,代码应为
    PrnInfo.hWnd = this->m_hWnd;
      

  2.   

    信息不够,判断不了。你可以记录一些调试信息写到文件里,看看这个m_hWnd什么时候变成0x00000000了。
      

  3.   

    控件在VB中能够正确创建,只是在调用该控件的该方法时报错,我跟踪调试了一下,vb调用时 this->m_hWnd 始终为0x00000000
      

  4.   

    控件在VB中应该是创建成功了,我刚才给控件加了一个方法MsgTest,代码如下:
    void CMyPrtOcxCtrl::MsgTest() 
    {
    MessageBox ("test!");
    }
    在VB中调用该方法可以出现对话框
      

  5.   

    创建ActiveX的类型有问题,修改IMPLEMENT_OLECTLTYPE中第三个参数BASED_CODE的值试试
      

  6.   

    楼上高手,我是用MFC创建的控件,您能说的详细点吗,我没有找到该选项