我用c#做二次开发,用到com组件,我将该组件添加到子窗体里(是个显示图像的组件),然后在form2的form2_load()中添加处理com组件的代码,但调试总是停在form1中现实newform2.show()的地方,我调试了,是在退出form2_load()时出的错。        假如我不用MDI,只是在form1中单击按钮或菜单时弹出form2,然后就没问题,但达不到我要的效果,我要的是MDI,在父窗体里能管理子窗体。        不知道这两种方式关于窗口句柄之类的数据传递的区别在哪啊?求高手帮忙解决!!!!!!        还有,可不可以给推荐一本讲MDI比较深一点儿的c#的书籍!看了好几本书,都很肤浅,只讲怎么做出MDI来,其他的都不管了。        这个问题困扰好几天了,提前谢谢了!

解决方案 »

  1.   

    看样子,是CreateDrawWidget()这个方法的问题,
    我看了一下C++的有这么一句
    m_idl.InitIDL((long)m_hWnd);
    你是不是应该加上
     newfrmchild.axIDLDrawWidget1 .InitIDL((int)this.Handle);
      

  2.   

    刚刚去仔细看了一下,发现刚才有点儿想当然了。newfrmchild.axIDLDrawWidget1 .InitIDL((int)this.Handle);是初始化IDL窗体而不是显示窗体。给你个链接,正好就是你这个问题,其实和MDI窗体没关系,还是获得Draw窗体句柄的问题
    关于IDLDrawWidget的问题
    PS:至于说MDI的详细资料,应该MSDN上就有吧,呵呵。
      

  3.   

       恩,我昨天试了试在IDLDrawWidget下添加一个panel,就不会出现刚才的问题了,但不知道什么原因?
    那个帖子我看过了,他们都没用MDI,我问过了。有人说这得找c#高手,所以我就来csdn问了,呵呵 !
       真的很谢谢你!csdn上热心人很多啊,呵呵!
    ps:  楼上你是不是也学IDL啊?