Internet Explorer 9 용 추가 기능을 만들고 기본 컨텍스트 메뉴를 직접 변경해야합니다. 저는 C++로 BHO를 작성하고 ATL을 사용하고 있습니다. 컨텍스트 메뉴 (HTMLDocumentEvents2::oncontextmenu)를 표시하는 이벤트를 처리했지만 내 자신을 표시 할 수 없습니다. 다음은 마우스 오른쪽 버튼을 클릭하면 발사 코드는 다음과 같습니다Internet Explorer에서 내 컨텍스트 메뉴를 표시하는 방법
VARIANT_BOOL STDMETHODCALLTYPE CSpellCheckerBHO::OnContextMenu(IHTMLEventObj *pEvtObj)
{
HMENU contextMenu = CreatePopupMenu();
MENUITEMINFO item_info = { 0 };
item_info.cbSize = sizeof(MENUITEMINFO);
item_info.fMask = MIIM_TYPE | MIIM_ID;
item_info.fType = MFT_STRING;
item_info.wID = 0;
item_info.dwTypeData = L"TEST";
item_info.cch = 4;
BOOL result = InsertMenuItem(contextMenu, 0, FALSE, &item_info);
HWND browserHandle = 0;
HRESULT hr = _webBrowser->get_HWND((LONG_PTR*)&browserHandle);
result = TrackPopupMenuEx(contextMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, 0,0, browserHandle , NULL);
return VARIANT_FALSE;
}
_webBrowser는 IWebBrowser2 개체의 포인터, 나는 SetSite는 함수에서 그것을 얻었다.
표준 컨텍스트 메뉴
가 (때문에 VARIANT_FALSE 반환에) 표시되지 않지만 TrackPopupMenuEx는 아무것도하지 않고 0당신은 알고 계십니까 반환 내가 무엇을 잘못하고 있는가? 일부 텍스트 항목이있는 간단한 메뉴가 필요합니다.