как использовать cef_menu_handler для создания собственного меню?

Недавно я использовал Chromium Embedded Framework для реализации веб-браузера. Теперь я хочу сделать контекстное меню, которое появляется при щелчке правой кнопкой мыши, но я не уверен, как это сделать.


person Lecter Tang    schedule 03.07.2012    source источник


Ответы (1)


Вам нужно переопределить метод OnBeforeMenu в CefMenuHandler. В вашей реализации этого метода отобразите контекстное меню, используя стандартную технику, и верните true:

bool MyMenuHandler::OnBeforeMenu(CefRefPtr<CefBrowser> browser,
                                 const CefMenuInfo& menuInfo)
{
  HMENU hPopupMenu = CreatePopupMenu();
  InsertMenu(hPopupMenu, 0, MF_BYPOSITION | MF_STRING, ID_POPUP_FOO, "Foo");
  TrackPopupMenu(hPopupMenu, TPM_BOTTOMALIGN | TPM_LEFTALIGN, xpos, ypos, 0, m_hWnd, NULL);
  return true;
}
person Emerick Rogul    schedule 15.07.2012
comment
Большое спасибо. и я понимаю это с помощью своего метода, что вполне вероятно. - person Lecter Tang; 14.08.2012
comment
кстати я хочу реализовать функцию Drag, и я переопределяю метод OnDragEnter своим ClientHandler, но не могу получить имя файла dragData, почему? Я могу получить имя файла в OnDragStart. Нужен ли ему JavaScript? с нетерпением жду вашего ответа. - person Lecter Tang; 14.08.2012