2011-06-07 67 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标志工作。因此,您可以添加新的菜单项,但无法处理命令。糟糕的微软,非常糟糕的设计。

相关问题