给分。
自己继承cedit类.响应on_rbuttondown消息,就可以了.

解决方案 »

  1.   


    POINT point;
    RECT rect;//rect为edit控件所在的区域
    case WM_RBUTTONUP
    point.x=LOWORD(lParam);
    point.y=HIWORD(lParam);
    if(point.x>=rect.left&&point.x<=rect.right&&
       point.y>=rect.top&&point.y<=rect.bottom)
    {
    ClinetToScreen(hwnd,&point);
    TrackPopupMenu(hMenu,TPM_RIGHTBUTTON,point.x,point.y,0,hwnd,NULL);
    }
    return 0;
      

  2.   

    各位没有明白我的意思,怪我没有说清
    首先,这个edit控件不是我创建,如果在对话框上加入一个edit控件,你什么也不必做,它本身就会有右键菜单.我想把这个菜单改掉
    第二,我不想截获右键消息自己重写一个菜单,我只是想在原有基础上加入一个菜单项
    以上各位所讲的办法似乎都是需要自己创建edit,那这个问题就简单了
    有没有其他办法,谢谢
      

  3.   

    好像只有挂钩子了
    替换掉那个Edit的WinProc
      

  4.   

    SubApp.exe Shows How to Append Menu Items to Other Apps Q72222
    --------------------------------------------------------------------------------
    The information in this article applies to:Microsoft Windows Software Development Kit (SDK) versions 3.0, 3.1
      

  5.   

    用这个软件http://home.luzhou.net/xlfrd/soft/APeye.zip
    打开一个有EDIT的EXE,在EIDT上右击,看它调用了哪个API,我没空试,也许这个办法不行,我以后再想想.
      

  6.   

    挂钩方法我试过,有个问题:
    我试图截获TrackPopupMenu(Ex),截获API比较可靠的方法是
    修改模块的IAT,找到TrackPopupMenu的Thunk写成自己的,
    但是Edit控件的TrackPopupMenu大概是在User32.dll中内部调用的,模块的IAT中
    根本找不到TrackPopupMenu. 也许Edit根本不会调用TrackPopupMenu.
    SubApp.exe 是得到系统菜单,这个问题好办.问题关键是无法得到Edit创建的右键
    菜单句柄.
    APeye.exe 一用就死
    现在,无计可施
      

  7.   

    不让它TrackPopupMenu,自己弹个菜单出来
      

  8.   

    我刚才说过,我不想改变它的菜单,只想加一个我的菜单项,
    如果不让它弹出菜单,那简单了,我只要在子类化的WndProc中
    截获WM_CONTEXTMENU就可以了嘛
    谢谢
      

  9.   

    捕获WM_INITMENUPOPUP呢?(我没有试过捕获其他程序的)
      

  10.   

    试过,自己调用TrackPopupMenu可以得到WM_INITMENUPOPUP,
    偏偏Edit右键菜单就是得不到
      

  11.   

    EDIT没有WM_INITMENUPOPUP消息,但可以捕到WM_CONTEXTMENU和菜单窗口创建时的WM_CREATE,问题由这些数据不好转为菜单句柄,就不能动态加菜单子项.
    以上消息用WH_CALLWNDPROC钩子捕.
      

  12.   

    EDIT没有WM_INITMENUPOPUP消息,
    但可以捕到WM_CONTEXTMENU和菜单窗口创建时的WM_CREATE,
    问题是由这些数据不好转为菜单句柄,就不能动态加菜单子项.
    以上消息用WH_CALLWNDPROC钩子捕. 
     
      

  13.   

    你说的菜单窗口创建时的WM_CREATE是什么?
    菜单创建时也有WM_CREATE吗?