2011-06-07 66 views
1

在windows7之前,解決方案很簡單。只需添加自己的菜單並編寫自己的「撤消,重做,剪切,複製,粘貼,刪除,全選」菜單項。但現在不可能了,因爲菜單已經變得非常複雜的Unicode和輸入消息的東西。我該如何修改CEdit控件的上下文菜單?

回答

1

好吧,我發現怎麼辦呢

static bool is_first_time; 

case WM_CONTEXTMENU: { 
    is_first_time = true; 
    original_window_proc(message,wparam,lparam); 
    break; 

case WM_ENTERIDLE: 
    if (wparam == MSGF_MENU) { 
     if (is_first_time) { 
      is_first_time = false; 
      assert(!agui_text_popup_context_menu); 
      MENUBARINFO mbi; 
      memset(&mbi, 0, sizeof(MENUBARINFO)); 
      mbi.cbSize = sizeof(MENUBARINFO); 
      GetMenuBarInfo((HWND)lparam, OBJID_CLIENT, 0, &mbi); 
      if (::IsMenu((HMENU)mbi.hMenu)) { 
       .... add your menu items here 
      } 
     } 
    } 

不幸的是,這並不因爲代碼使用TrackPopupMenu與TPM_RETURNCMD和TPM_NONOTIFY標誌工作。因此,您可以添加新的菜單項,但無法處理命令。糟糕的微軟,非常糟糕的設計。

相關問題