我在弄的程序是  单击鼠标右键,弹出菜单,选择菜单弹出对话框.但是单击右键却出现exe文件需要关闭in view.h
afx_msg void OnRButtonDown(UINT nFlags,CPoint point);
afx_msg void OnShow();int view.cpp
ON_WM_RBUTTONDOWN()
ON_COMMAND(IDM_SHOW,OnShow)in view.cpp
void View::OnRButtonDown(UINT nFlags,CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup =menu.GetSubMenu(0);
ClientToScreen(&point);
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
CView::OnRButtonDown(nFlags,point);
}
void View::OnShow()
{
MessageBox("hello");
}  

解决方案 »

  1.   

    似乎问题在于  menu1,我是用在insert里的resource,new出来的,但是看到这样弄出来的和光盘里的这个程序的插入的menu1不一样,光盘里的是有一个text产生右和下方向的菜单,但是insert里new出来的是一个孤立的。
      

  2.   

    你insert了一个菜单后就没进行什么操作?比如修改菜单ID之类的
    如果不是view as popup类型的话,应该是第一个菜单有下拉菜单,点右键时弹出来的应该是第一个下拉的菜单
      

  3.   

    当然要修改id了,现在我用资源栏里点鼠标右键插入的,现在也是和光盘里的一样了,但是新的问题又来了。
    点右键会产生  Debug Assertion Failed对话框,选忽略后又是exe遇到问题需要关闭
      

  4.   

    程序运行到  CView::OnRButtonDown(nFlags,point);  出错
      

  5.   

    怎么可能,OnRButtonDown(nFlags,point);出错,
    你把OnRButtonDown里面内容注释掉还会出错?
      

  6.   

    CView::OnRButtonDown(nFlags,point);的前一步
      

  7.   

    运行到  CMenu *pPopup =menu.GetSubMenu(0); 已经弹出了  选择终止,重试,忽略的对话框
      

  8.   

    估计是资源有问题,LoadMenu的值是0
      

  9.   

    menu加载成功了吗?可以加个VERIFY判断一下,可能资源有问题。
    VERIFY(menu.LoadMenu(IDR_MENU1));
      

  10.   

    menu.LoadMenu(IDR_MENU1);
    你的这个加载成功了吗?还有你是做右键弹出菜单吗?响应WM_CONTEXTMENU消息吧,这个比较正规
      

  11.   

    WM_CONTEXTMENU  ?我没有啊,但是也可以的,ON_COMMAND(IDM_SHOW,OnShow),OnShow自定义函数。还是谢谢你阿
      

  12.   

    找不到WM_COnTEXTMENU消息???好好找,向导里找不到,就手动写