大家好,学VC的时候有这段代码,其中最后是menu.Detach()。书上说当菜单对象是个局部对象时,调用菜单对象的detach函数将菜单句柄和菜单对象分开。我仍然感觉到模糊,希望大家能不能指点一下,这个detach的意思是什么呢。
代码如下int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
....
SetMenu(NULL);
menu.LoadMenu(IDR_MAINFRAME);
setMenu(&menu);
menu.Detach();
return 0;
}
当不调用detach的时候,书上说的是点击打印窗口,然后关闭打印窗口,这个时候菜单就会不在了。为什么会不在了呢,如果不用detach,究竟是在哪一部分操作时候会出错?
代码如下int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
....
SetMenu(NULL);
menu.LoadMenu(IDR_MAINFRAME);
setMenu(&menu);
menu.Detach();
return 0;
}
当不调用detach的时候,书上说的是点击打印窗口,然后关闭打印窗口,这个时候菜单就会不在了。为什么会不在了呢,如果不用detach,究竟是在哪一部分操作时候会出错?
HMENU CMenu::Detach()
{
HMENU h = m_hMenu;
m_hMenu = NULL; return h;
}
Windows的接口也就是API,MFC是对API的一层封装。菜单是一种资源,API通过HMENU来引用它、使用它,
CMenu对HMENU进一部封装,从而使菜单更加用以使用。
我是初学者,如果讲错了还请大虾们批评指教