1】我有个别人写好了的OCX源码,我想在控件里面加上自己的方法和属性,但是加上并注册后,在IDE中看方法列表时根本就没有我定义的那个方法,是什么原因?2】写ACTIVEX控件时能加上DIALOG资源吗,使其他IDE(如VB)可调用某个方法后就弹出我在控件中加入的窗体。例如用方法xxx.showColorPopup,就弹出控件中的DIALOG。请各位路过的帮忙~~~~

解决方案 »

  1.   

    1、确保你的控件组测成功。使用ActiveX Control Test Container 测试一下!2、没有想过,更没有做过!
      

  2.   

    在VC的菜单中,project->add to project->components and controls中查找你已经注册的控件,你也可以在VC的安装目录下查找.
      

  3.   

    1】我有个别人写好了的OCX源码,我想在控件里面加上自己的方法和属性,但是加上并注册后,在IDE中看方法列表时根本就没有我定义的那个方法,是什么原因?   我觉得你修改控件源码后重新编译注册,应该就可以的,你说的在IDE中看方法列表指的是从哪里看方法的列表?你采用的是包装类吗?如果是你包装类估计你要重新生成包装类了吧?如果你是用的导入tlb类型库,估计你也要重新更换新的类型库了。反正就是你要保证你的接口文件是更新过的。2】写ACTIVEX控件时能加上DIALOG资源吗,使其他IDE(如VB)可调用某个方法后就弹出我在控件中加入的窗体。例如用方法xxx.showColorPopup,就弹出控件中的DIALOG。
        
       第二点,关于在activex中加入对话框资源,我个人觉得是可行的,
      

  4.   

    OK,第二点我给你验证了一下,确实可行,你可以添加一个对话框资源,生成一个新类,定义一个对象,然后就可以调用了void CActiveXProgCtrl::SetPos(short nPercent) 
    {
    // TODO: Add your dispatch handler code here
    TestDlg dlg;
     dlg.DoModal(); 
    }
    上面是我的activex控件的一个方法,我定义了一个对话框的对象,当我调用这个方法的时候,就会弹出对话框
      

  5.   

    问题1:应该是你哪里没有写好。如你是用纯手工加的话,注意在odl文件,类中,和Dispatch map中有相应的语句
    问题2:完全可以那样做,没有问题的
      

  6.   

    多谢楼上的大哥们,我在已经有的方法中加入afxmessagebox语句然后build后,在VB里面调试可以弹出对话框。说明我的OCX已经更新,但就是在智能感应列表或通过VB的OBJECT BROWSER里看方法列表都没有。如longlinzfk老兄说的,我自定义的方法都是手工添加上去的,但是就是不行,但你所说的odl文件和dispatch map应该在哪个文件可以找到,如何编辑?第二个问题多谢各位。我刚学VC,可能有些术语不是很对,希望各位谅解,但还是恳请各位继续帮我解答第一个问题,谢谢。
      

  7.   

    我在已经有的方法(备注:之前OCX已经定义了的方法中,而不是我自己定义的方法)中加入afxmessagebox语句然后build后,在VB里面调试可以弹出对话框。
      

  8.   

    我用JPEGLIB进行BMP转JPG
    我得到一个HBITMAP类型,用如下代码对吗?
    CBitmap cBitmap;
    BITMAP bitmap;
    BYTE *lpData = NULL;
             //得到当前画布的HBitmap
    HBITMAP hbmp = m_DrawPad.CreateBitmap(); cBitmap.Attach(hbmp);
    cBitmap.GetBitmap(&bitmap);
    cBitmap.GetBitmapBits(bitmap.bmWidthBytes*bitmap.bmHeight, lpData);
    if (!JpegFile::RGBToJpegFile(szFileName, lpData, bitmap.bmWidth, bitmap.bmHeight, TRUE, 75)) return FALSE;
    return TRUE;用过JPEGLIB库的帮我看看~~~
      

  9.   

    第一个问题:你检查一下odl文件中你新加的属性方法的ID是否和原来的连续,
    不连续则不成功.或者删除NCB文件重新编译一下试一试.
    第二个问题:当然可以加入对话框资源并显示,同意 aoosang(智慧的鱼) 的说法.
      

  10.   

    1】我有个别人写好了的OCX源码,我想在控件里面加上自己的方法和属性,但是加上并注册后,在IDE中看方法列表时根本就没有我定义的那个方法,是什么原因?注意将 tlb 文件删除后再重新编译。2】写ACTIVEX控件时能加上DIALOG资源吗,使其他IDE(如VB)可调用某个方法后就弹出我在控件中加入的窗体。例如用方法xxx.showColorPopup,就弹出控件中的DIALOG。
        
    肯定没问题。