因为是针对平台软件的二次开发,做了一个Form放到dll里被主程序加载这个form放了一个菜单栏,就是点击列表选择Save as什么的问题是,如果用SetParent设置主程序的窗体和我这个Form的关系(因为只能获取主窗体的handle),那么加载打开我这个Form的时候,点击菜单栏没有下拉菜单但是去掉SetParent就可以出现正常的菜单栏请问有什么办法解决吗?谢谢

解决方案 »

  1.   

    没解决办法~~你的主程序也和你的dll一样是.NET的编写的么?是的话,主窗体改成MDIParent,子窗体为MDI子窗体。插件方式应该是主从程序共同配合的,而不是插件自己去做所有的事。我的做法是,主MDI窗体Load dll之后反射实例化一个插件窗体,然后添加到子窗体集合中,而不是用API函数。
      

  2.   


    主程序是商用软件,只提供一些接口类库
    其中提供了获取主窗口handle的API
    主程序的调用使用的固定名字的函数,如Main,插件程序只是填写这个函数,生成dll
      

  3.   

    你可以将服务写成一个dll文件,然后由主窗体程序运行服务,通过服务弹出你的窗体,这样你自己做的窗体和主窗体程序就不会互相影响了