标签:cef CefRefPtr IMAGE 保存 ID params 右键 model frame
// CefContextMenuHandler methods void BrowserHandler::OnBeforeContextMenu(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model) { REQUIRE_UI_THREAD(); // CM_TYPEFLAG_MEDIA 包含图片、视频、文件等等 // 可以再进行细化判断:params->GetMediaType() & CM_MEDIATYPE_IMAGE != 0 if ((params->GetTypeFlags() & CM_TYPEFLAG_MEDIA) != 0 && (params->GetMediaType() & CM_MEDIATYPE_IMAGE != 0)) { if (model->GetCount() > 0) { // 禁止右键菜单 model->Clear(); } model->InsertItemAt(0, CLIENT_ID_COPY_IMAGE, L"复制图片"); model->InsertItemAt(1, CLIENT_ID_SAVE_IMAGE_AS, L"图片另存为..."); model->InsertSeparatorAt(2); model->AddItem(MENU_ID_PRINT, L"打印"); } } // 处理点击事件 bool BrowserHandler::OnContextMenuCommand(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, CefRefPtr<CefContextMenuParams> params, int command_id, EventFlags event_flags) { // 复制图片到剪切板 if (command_id == CLIENT_ID_COPY_IMAGE) { frame->Copy(); } else if (command_id == CLIENT_ID_SAVE_IMAGE_AS) { // 存储图片 frame->GetBrowser().get()->GetHost().get()->StartDownload(frame->GetURL()); } if (handle_delegate_) return handle_delegate_->OnContextMenuCommand(browser, frame, params, command_id, event_flags); else return false; }
转载于:libcef3——自定义右键菜单,复制图片和图片另存为_Go和分布式IM的博客-CSDN博客
标签:cef,CefRefPtr,IMAGE,保存,ID,params,右键,model,frame 来源: https://www.cnblogs.com/tingtaishou/p/16150231.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。