#define SHDVID_GETMIMECSETMENU 27
......
CComPtr spCT;
hr = pcmdTarget->QueryInterface(IID_IOleCommandTarget, (void**)&spCT);
......
// Get the language submenu
hr = spCT->Exec(&CGID_ShellDocView, SHDVID_GETMIMECSETMENU, 0, NULL, &var);
void CMainFrame::OnDropDown( NMHDR* pNotifyStruct, LRESULT* pResult )
{
const UINT CmdID_GetMimeSubMenu = 27;
// Command ID for getting the Encoding submenu
NMTOOLBAR* pNMToolBar = ( NMTOOLBAR* )pNotifyStruct;
CMenu menu;
CMenu* pPopup = 0;
CMyHtmlView *pView = NULL;
m_bIsEncodMenuPopup = false;//标志变量,用以在WM_INITMENUPOPUP消息处理函数中检查“编码”菜单
switch ( pNMToolBar->iItem )
{
......
case ID_VIEW_ENCODE://按下“编码”按钮
{
m_bIsEncodMenuPopup = true;
VERIFY( menu.LoadMenu( IDR_ENCODE ) );//IDR_ENCODE是预置的“编码”菜单资源,内含任意一项占位用的菜单
CMyHtmlView = GetActiveMyHtmlView();//检查当前是否存在活动的浏览器视图窗口
if ( pView != NULL )
{
LPDISPATCH lpDispatch =pView->GetHtmlDocument();//获得文档指针
if ( lpDispatch != NULL )
{
// Get an IDispatch pointer for the IOleCommandTarget interface.
IOleCommandTarget * pCmdTarget = NULL;
HRESULT hr = lpDispatch->QueryInterface(IID_IOleCommandTarget, (void**)&pCmdTarget);
if ( SUCCEEDED( hr ) )
{
VARIANT varEncSubMenu;
::VariantInit( &varEncSubMenu );
&nb
[1] [2] [3] 下一页