用GetSystemMenu(m_hWnd, FALSE);
返回的总是空的0x00000000。我用的是FormView。
m_hWnd 应该是MainFrame的。

解决方案 »

  1.   

    我在我的FormView子类中写:
    CMenu* a=GetSystemMenu( FALSE);
    CMenu* b=this->GetParent()->GetSystemMenu(FALSE);
    结果b取道了,a是0x00000000。说明由MainFrame可以取道sysMenu.
    而且我调试看了this->GetParent()是0x015a1360.然后我到另外一个我自己写得类中写:
    CWnd * pWnd = CWnd::FromHandle(m_hWnd);
    CMenu SysMenu;
    SysMenu.Attach( GetSystemMenu(m_hWnd, FALSE) );GetSystemMenu(m_hWnd, FALSE)返回的是0x00000000,即没有取到。
    这是pWnd是0x015a1360,即是MainFrame.
      

  2.   

    这样吧:CMenu SysMenu;
             SysMenu.Attach( AfxGetMainWnd()->GetSystemMenu(FALSE) );
      

  3.   

    不行啊,这样
    AfxGetMainWnd()->GetSystemMenu(FALSE)  返回的是CMenu*
    但是SysMenu.Attach()要的参数是HMENU.编译通不过。
      

  4.   

    其实我也试过用
    CMenu* a  =  pWnd->GetSystemMenu(FALSE);
    (在我说的另外一个我自己写得类中)这样写也是没有取到。但是在我的FormView子类
    CMenu* b=this->GetParent()->GetSystemMenu(FALSE);
    就可以。而且this->GetParent()  和 pWnd所指地址都是一样的啊,应该都是MainFrame的句柄。
    为什么在两个地方写就会有不同的结果呢?
      

  5.   

    而且很奇怪的是,下面这句话
    CMenu* a=AfxGetMainWnd()->GetSystemMenu(FALSE);
    在这两个地方使用也是同样的效果,
    即在FormView子类就可以
    另外一个我自己写得类中就不可以。
      

  6.   

    既然这样,那么我建议用以下方法试试看:
    在FormView子类中用一下:
    CMenu* b=this->GetParent()->GetSystemMenu(FALSE);
    (虽然只是得到一个临时的b,但是于后面可能有点作用)然后我想这时候在另外一个类中用
    SysMenu.Attach( GetSystemMenu(m_hWnd, FALSE) );
    就可以了取到了