为什么总是取不到系统菜单?

addition 2003-06-08 12:20:09
用GetSystemMenu(m_hWnd, FALSE);
返回的总是空的0x00000000。

我用的是FormView。
m_hWnd 应该是MainFrame的。
...全文
52 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
addition 2003-06-08
  • 打赏
  • 举报
回复
我在我的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.
tj_aj 2003-06-08
  • 打赏
  • 举报
回复
既然这样,那么我建议用以下方法试试看:
在FormView子类中用一下:
CMenu* b=this->GetParent()->GetSystemMenu(FALSE);
(虽然只是得到一个临时的b,但是于后面可能有点作用)

然后我想这时候在另外一个类中用
SysMenu.Attach( GetSystemMenu(m_hWnd, FALSE) );
就可以了取到了
addition 2003-06-08
  • 打赏
  • 举报
回复
而且很奇怪的是,下面这句话
CMenu* a=AfxGetMainWnd()->GetSystemMenu(FALSE);
在这两个地方使用也是同样的效果,
即在FormView子类就可以
另外一个我自己写得类中就不可以。
addition 2003-06-08
  • 打赏
  • 举报
回复
其实我也试过用
CMenu* a = pWnd->GetSystemMenu(FALSE);
(在我说的另外一个我自己写得类中)

这样写也是没有取到。

但是在我的FormView子类
CMenu* b=this->GetParent()->GetSystemMenu(FALSE);
就可以。

而且this->GetParent() 和 pWnd所指地址都是一样的啊,应该都是MainFrame的句柄。
为什么在两个地方写就会有不同的结果呢?
addition 2003-06-08
  • 打赏
  • 举报
回复
不行啊,这样
AfxGetMainWnd()->GetSystemMenu(FALSE) 返回的是CMenu*
但是SysMenu.Attach()要的参数是HMENU.

编译通不过。
cxjlw 2003-06-08
  • 打赏
  • 举报
回复
这样吧:CMenu SysMenu;
SysMenu.Attach( AfxGetMainWnd()->GetSystemMenu(FALSE) );

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧