在DLL中exports一个函数SetWndMenu(HMENU hMenu);
在主程序中先用LoadMenu装入菜单资源再调用此函数传入DLL中,
在DLL的函数中则用SetMenu将菜单装载到DLL中的窗体上。

解决方案 »

  1.   

    传个hMenu过去,然后在DLL中 new CMenu ; 然后 cmenu.Attach(hMenu);
      

  2.   

    那就这样做好啦,用GetWindowLong(GWL_HINSTANCE)得到Application Instance的句柄传过去,在DLL中LoadMenu然后再SetMenu
      

  3.   

    指针不为空,可是cmd总是0?
    int CMD=PopMenu->TrackPopupMenu(TPM_NONOTIFY|TPM_RETURNCMD|TPM_LEFTBUTTON|TPM_LEFTALIGN,point.x,point.y,NULL);
      

  4.   

    不用GetWindowLong啦,直接用AfxGetInstanceHandle()得啦。
      

  5.   

    prometheusphinx(白日梦)可否详细点?我怎么传这些东东?
      

  6.   

    还是做一个函数,但不是传菜单的句柄而是传Application Instance的句柄,然后在DLL中用LoadMenu来装载菜单,
    DLL
    SetMenu(HINSTANCE hInst, LPCTSTR lpMenuName)
    {
      HMENU hMenu = LoadMenu(hInst, lpMenuName);
      TrackPopupMenu(hMenu....
    }APP
    SetMenu(AfxGetInstanceHandle(), (LPCTSTR)IDR_POPUPMENU);