在VB中,如果打开一个MDI子窗体,MDI子窗体上的菜单会替换掉父窗体的菜单。
有什么办法可以实现子窗体和父窗体的菜单都保留吗?谢谢!

解决方案 »

  1.   

    不用MDI
    用SetParent这个API把一个From装到另外一个Form中
      

  2.   

    首先在MDI菜单上建立好基本的菜单。
           然后在MDI子菜单上建立MDI菜单中所有的菜单,在加上你要求的MDI子菜单上所独有的菜单,即:MDI子菜单拥有包括MDI菜单内所有的菜单项目。
           这样,当MDI子菜单关闭的时候,MDI菜单上就只有它本身的几个基本菜单项目,而当MDI子菜单打开的时候,MDI子菜单就或将MDI菜单上所有的项目全部覆盖。就可以达到目的了。
      

  3.   

    都保留是不可能的,除非按一楼的办法,不过这有缺陷,不能重新排列窗口.
    还有一个比较麻烦的方法,就是使子窗口的菜单和MDI窗口的菜单做成一样的.
      

  4.   

    如果用楼二的方法,将会有很多多余的代码,维护起来非常麻烦。
    楼一的方法能把一个窗体装到另外窗体,但是与mdi窗口的方式是不同的。有没有其他API函数能实现这个功能?
    或者能够实现MDI子窗体能够继承父窗体的菜单也是可以的?
      

  5.   

    一楼的做法有两点和MDI窗口不一样;1. 窗口标题栏,MDI子窗口最大化的时候,标题栏会和MDI窗口的标题栏叠加,而用setparent不会
    ,变成上下两个标题栏,很难看。2. 滚动条,在MDI窗口中,如果子窗口操作MDI窗口,则MDI窗口会出现滚动条,而用setparent的方法的窗口不会。如果有人能解决这两个问题,setParent出来的窗口就和MDI类似了,而且更灵活。