home *** CD-ROM | disk | FTP | other *** search
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
- #include "stdafx.h"
-
- #ifdef AFX_OLE2_SEG
- #pragma code_seg(AFX_OLE2_SEG)
- #endif
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- #define new DEBUG_NEW
-
- /////////////////////////////////////////////////////////////////////////////
- // more User interface for COleClientItem
-
- /////////////////////////////////////////////////////////////////////////////
- // OLE Object Verb Menu helpers
-
- // simple wrapper for OleUIAddVerbMenu API
-
- void AFXAPI AfxOleSetEditMenu(COleClientItem* pItem, CMenu* pMenu,
- UINT iMenuItem, UINT nIDVerbMin, UINT nIDVerbMax, UINT nIDConvert)
- {
- ASSERT_VALID(pMenu);
- if (pItem != NULL)
- ASSERT_VALID(pItem);
-
- HMENU hmenuDummy;
- if (!::OleUIAddVerbMenu(pItem != NULL ? pItem->m_lpObject : NULL,
- NULL, pMenu->GetSafeHmenu(), iMenuItem,
- nIDVerbMin, nIDVerbMax, nIDConvert != 0, nIDConvert, &hmenuDummy))
- {
- // turn gray popup into gray disabled normal menu item
- TCHAR szBuffer[256];
- pMenu->GetMenuString(iMenuItem, szBuffer, sizeof szBuffer, MF_BYPOSITION);
- pMenu->DeleteMenu(iMenuItem, MF_BYPOSITION);
- pMenu->InsertMenu(
- iMenuItem, MF_BYPOSITION|MF_STRING|MF_GRAYED|MF_DISABLED,
- nIDVerbMin, szBuffer);
- }
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // UI message handlers
-
- void COleDocument::OnUpdatePasteMenu(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(COleClientItem::CanPaste());
- }
-
- void COleDocument::OnUpdatePasteLinkMenu(CCmdUI* pCmdUI)
- {
- pCmdUI->Enable(COleClientItem::CanPasteLink());
- }
-
- void COleDocument::OnUpdateEditLinksMenu(CCmdUI* pCmdUI)
- {
- POSITION pos = GetStartPosition();
- COleClientItem* pItem;
- while ((pItem = GetNextClientItem(pos)) != NULL)
- {
- if (pItem->GetType() == OT_LINK)
- {
- // we found a link!
- pCmdUI->Enable(TRUE);
- return;
- }
- }
- pCmdUI->Enable(FALSE); // no links today
- }
-
- void COleDocument::OnEditLinks()
- {
- ASSERT_VALID(this);
-
- COleLinksDialog dlg(this, GetRoutingView_());
- dlg.DoModal();
- }
-
- void COleDocument::OnEditConvert()
- {
- ASSERT_VALID(this);
-
- // get selected item
- COleClientItem* pItem = GetPrimarySelectedItem(GetRoutingView_());
- if (pItem == NULL)
- return;
-
- // do conversion dialog & convert for that item
- COleConvertDialog dlg(pItem);
- if (dlg.DoModal() == IDOK)
- dlg.DoConvert(pItem);
- }
-
- void COleDocument::OnUpdateEditChangeIcon(CCmdUI* pCmdUI)
- {
- ASSERT_VALID(this);
-
- pCmdUI->Enable(GetPrimarySelectedItem(GetRoutingView_()) != NULL);
- }
-
- void COleDocument::OnEditChangeIcon()
- {
- ASSERT_VALID(this);
-
- // get selected item
- COleClientItem* pItem = GetPrimarySelectedItem(GetRoutingView_());
- if (pItem == NULL)
- return;
-
- // do conversion dialog & convert for that item
- COleChangeIconDialog dlg(pItem);
- if (dlg.DoModal() == IDOK)
- dlg.DoChangeIcon(pItem);
- }
-
- void COleDocument::OnUpdateObjectVerbMenu(CCmdUI* pCmdUI)
- {
- if (pCmdUI->m_pMenu == NULL || pCmdUI->m_pParentMenu == NULL)
- {
- // not a menu or is on sub-menu (don't recurse)
- pCmdUI->ContinueRouting();
- return;
- }
-
- // check for single selection
- COleClientItem* pItem = GetPrimarySelectedItem(GetRoutingView_());
- if (pItem == NULL || pItem->GetType() == OT_STATIC)
- {
- // no selection, or is 'static' item
- pCmdUI->Enable(FALSE);
- }
-
- // only include Convert... if there is a handler for ID_OLE_EDIT_CONVERT
- UINT nConvertID = ID_OLE_EDIT_CONVERT;
- AFX_CMDHANDLERINFO info;
- if (!OnCmdMsg(ID_OLE_EDIT_CONVERT, CN_COMMAND, NULL, &info))
- nConvertID = 0;
-
- // update the menu
- AfxOleSetEditMenu(GetPrimarySelectedItem(GetRoutingView_()),
- pCmdUI->m_pMenu, pCmdUI->m_nIndex,
- ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, nConvertID);
- }
-
- /////////////////////////////////////////////////////////////////////////////
-