我创建了单文档程序,在客户区内点右键,弹出一快捷菜单。代码如下:
void CFView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *p=menu.GetSubMenu(0);
ClientToScreen(&point); p->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON ,point.x,point.y,this);
CView::OnRButtonDown(nFlags, point);
}
运行结果正确,但这里的menu是局部对象啊,函数结束时,对象生命周期到了,那器关联的资源也应该没有了,就不应该弹出菜单啊,为什么这里会弹出呢?为什么? 谢谢指教
void CFView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *p=menu.GetSubMenu(0);
ClientToScreen(&point); p->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON ,point.x,point.y,this);
CView::OnRButtonDown(nFlags, point);
}
运行结果正确,但这里的menu是局部对象啊,函数结束时,对象生命周期到了,那器关联的资源也应该没有了,就不应该弹出菜单啊,为什么这里会弹出呢?为什么? 谢谢指教
解决方案 »
- ListCtrl的奇怪问题。
- 想用C++写一个小型的网络库(可以跨平台),但是还有点疑问,请高手进来指点~~~
- VC6.0中DBGrid控件的Columns选项卡中的Column项中的下拉菜单中的内容有时候会没了,请问是怎么回事
- VC读文本画等高线的错误
- activex的twain接口的扫描程序
- 急问:使用ODBC对access数据库备注字段的操作问题???
- 100分求一Com使用问题,解决当即散分
- 关于控件 CListCtrl
- 高分求"疑":找工作的感受(有工作经验的多谢赐教:)
- vc操作word,如果由于版本不同(如word 2000,word 2003))
- void CMainFrame::OnReplaceMenu()
- 救命!我的程序在别的机器上不能运行
很简单,你可以在TrackPopupMenu下添加一行测试代码,看菜单跳出时,是否执行到了下行,就了解了