本文整理汇总了C++中COleClientItem::GetType方法的典型用法代码示例。如果您正苦于以下问题:C++ COleClientItem::GetType方法的具体用法?C++ COleClientItem::GetType怎么用?C++ COleClientItem::GetType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类COleClientItem
的用法示例。
在下文中一共展示了COleClientItem::GetType方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReadClassStg
STDMETHODIMP COlePropertiesDialog::XOleUIObjInfo::GetConvertInfo(
DWORD dwObject, CLSID* lpClassID, WORD* lpwFormat,
CLSID*, LPCLSID*, UINT*)
{
COleClientItem* pItem = (COleClientItem*)dwObject;
ASSERT_VALID(pItem);
if (lpClassID != NULL)
{
if (pItem->GetType() == OT_LINK ||
S_OK != ReadClassStg(pItem->m_lpStorage, lpClassID))
{
pItem->GetClassID(lpClassID);
}
}
if (lpwFormat != NULL)
{
*lpwFormat = 0;
CLIPFORMAT cf;
if (ReadFmtUserTypeStg(pItem->m_lpStorage, &cf, NULL) == S_OK)
*lpwFormat = (WORD)cf;
}
// Note: leave rest at default
return S_OK;
}
示例2: CancelLink
STDMETHODIMP COleUILinkInfo::CancelLink(DWORD dwLink)
{
COleClientItem* pItem = (COleClientItem*)dwLink;
ASSERT_VALID(pItem);
ASSERT_KINDOF(COleClientItem, pItem);
ASSERT(pItem->GetType() == OT_LINK);
SCODE sc = E_FAIL;
TRY
{
if (pItem->FreezeLink())
sc = S_OK;
}
CATCH_ALL(e)
{
sc = COleException::Process(e);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
// report error
if (sc != S_OK)
pItem->ReportError(sc);
return S_OK;
}
示例3: GetLinkUpdateOptions
STDMETHODIMP COleUILinkInfo::GetLinkUpdateOptions(
DWORD dwLink, DWORD* lpdwUpdateOpt)
{
COleClientItem* pItem = (COleClientItem*)dwLink;
ASSERT_VALID(pItem);
ASSERT_KINDOF(COleClientItem, pItem);
SCODE sc;
TRY
{
if (pItem->GetType() == OT_LINK)
*lpdwUpdateOpt = pItem->GetLinkUpdateOptions();
else
*lpdwUpdateOpt = OLEUPDATE_ALWAYS; // make believe it is auto-link
sc = S_OK;
}
CATCH_ALL(e)
{
sc = COleException::Process(e);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
return sc;
}
示例4:
STDMETHODIMP_(DWORD) COleUILinkInfo::GetNextLink(
DWORD dwLink)
{
ASSERT(m_pDocument != NULL);
if (dwLink == 0)
{
// start enumerating from the beginning
m_pos = m_pDocument->GetStartPosition();
}
COleClientItem* pItem;
while ((pItem = m_pDocument->GetNextClientItem(m_pos)) != NULL)
{
// check for links
OLE_OBJTYPE objType = pItem->GetType();
if (m_bUpdateLinks && objType == OT_LINK)
{
// link found -- return it
return (DWORD)(void*)pItem;
}
// check for embeddings
if (m_bUpdateEmbeddings && objType == OT_EMBEDDED)
{
// embedding w/mismatched target device
return (DWORD)(void*)pItem;
}
}
return 0; // link not found
}
示例5: OnUpdateObjectVerbMenu
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);
}
示例6: AdjustObjectSubmenu
void CMainFrame::AdjustObjectSubmenu (CMFCPopupMenu* pMenuPopup)
{
ASSERT (pMenuPopup != NULL);
if (pMenuPopup == NULL)
{
return;
}
if (pMenuPopup->GetParentPopupMenu () != NULL)
{
return;
}
CMFCPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar ();
ASSERT (pMenuBar != NULL);
if (pMenuBar == NULL)
{
return;
}
int iIndex = pMenuBar->CommandToIndex (ID_OLE_VERB_POPUP);
if (iIndex < 0)
{
return;
}
CWordPadDoc* pDoc = (CWordPadDoc*)GetActiveDocument();
ASSERT_VALID (pDoc);
// check for single selection
COleClientItem* pItem = pDoc->GetPrimarySelectedItem(GetActiveView());
if (pItem == NULL || pItem->GetType() == OT_STATIC)
{
// no selection, or is 'static' item
return;
}
// only include Convert... if there is a handler for ID_OLE_EDIT_CONVERT
UINT nConvertID = ID_OLE_EDIT_CONVERT;
AFX_CMDHANDLERINFO info;
if (!pDoc->OnCmdMsg(ID_OLE_EDIT_CONVERT, CN_COMMAND, NULL, &info))
nConvertID = 0;
HMENU hMenu = pMenuBar->ExportToMenu ();
ASSERT(hMenu != NULL);
if (hMenu != NULL)
{
// update the menu
AfxOleSetEditMenu(pItem, CMenu::FromHandle (hMenu), iIndex, ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, nConvertID);
pMenuBar->ImportFromMenu (hMenu);
::DestroyMenu (hMenu);
}
}
示例7: OnUpdateEditLinksMenu
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
}
示例8: OpenLinkSource
STDMETHODIMP COleUILinkInfo::OpenLinkSource(DWORD dwLink)
{
COleClientItem* pItem = (COleClientItem*)dwLink;
ASSERT_VALID(pItem);
ASSERT_KINDOF(COleClientItem, pItem);
ASSERT(pItem->GetType() == OT_LINK);
SCODE sc;
TRY
{
// Note: no need for valid CView* since links don't activate inplace
pItem->DoVerb(OLEIVERB_SHOW, NULL);
sc = S_OK;
}
CATCH_ALL(e)
{
sc = COleException::Process(e);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
return sc;
}
示例9: SetLinkUpdateOptions
STDMETHODIMP COleUILinkInfo::SetLinkUpdateOptions(
DWORD dwLink, DWORD dwUpdateOpt)
{
COleClientItem* pItem = (COleClientItem*)dwLink;
ASSERT_VALID(pItem);
ASSERT_KINDOF(COleClientItem, pItem);
ASSERT(pItem->GetType() == OT_LINK);
SCODE sc;
TRY
{
// item is a link -- get its link options
pItem->SetLinkUpdateOptions((OLEUPDATE)dwUpdateOpt);
sc = S_OK;
}
CATCH_ALL(e)
{
sc = COleException::Process(e);
DELETE_EXCEPTION(e);
}
END_CATCH_ALL
return sc;
}
示例10: GetLinkSource
STDMETHODIMP COleUILinkInfo::GetLinkSource(
DWORD dwLink, LPTSTR* lplpszDisplayName, ULONG* lplenFileName,
LPTSTR* lplpszFullLinkType, LPTSTR* lplpszShortLinkType,
BOOL* lpfSourceAvailable, BOOL* lpfIsSelected)
{
COleClientItem* pItem = (COleClientItem*)dwLink;
ASSERT_VALID(pItem);
ASSERT_KINDOF(COleClientItem, pItem);
ASSERT(pItem->GetType() == OT_LINK);
// set OUT params to NULL
ASSERT(lplpszDisplayName != NULL);
*lplpszDisplayName = NULL;
if (lplpszFullLinkType != NULL)
*lplpszFullLinkType = NULL;
if (lplpszShortLinkType != NULL)
*lplpszShortLinkType = NULL;
if (lplenFileName != NULL)
*lplenFileName = 0;
if (lpfSourceAvailable != NULL)
*lpfSourceAvailable = !pItem->m_bLinkUnavail;
// get IOleLink interface
LPOLELINK lpOleLink = QUERYINTERFACE(pItem->m_lpObject, IOleLink);
ASSERT(lpOleLink != NULL);
// get moniker & object information
LPMONIKER lpmk;
if (lpOleLink->GetSourceMoniker(&lpmk) == S_OK)
{
if (lplenFileName != NULL)
*lplenFileName = _AfxOleGetLenFilePrefixOfMoniker(lpmk);
lpmk->Release();
}
// attempt to get the type names of the link
if (lplpszFullLinkType != NULL)
{
LPOLESTR lpOleStr = NULL;
pItem->m_lpObject->GetUserType(USERCLASSTYPE_FULL, &lpOleStr);
*lplpszFullLinkType = TASKSTRINGOLE2T(lpOleStr);
if (*lplpszFullLinkType == NULL)
{
TCHAR szUnknown[256];
VERIFY(AfxLoadString(AFX_IDS_UNKNOWNTYPE, szUnknown) != 0);
*lplpszFullLinkType = AfxAllocTaskString(szUnknown);
}
}
if (lplpszShortLinkType != NULL)
{
LPOLESTR lpOleStr = NULL;
pItem->m_lpObject->GetUserType(USERCLASSTYPE_SHORT, &lpOleStr);
*lplpszShortLinkType = TASKSTRINGOLE2T(lpOleStr);
if (*lplpszShortLinkType == NULL)
{
TCHAR szUnknown[256];
VERIFY(AfxLoadString(AFX_IDS_UNKNOWNTYPE, szUnknown) != 0);
*lplpszShortLinkType = AfxAllocTaskString(szUnknown);
}
}
// get source display name for moniker
LPOLESTR lpOleStr = NULL;
SCODE sc = lpOleLink->GetSourceDisplayName(&lpOleStr);
*lplpszDisplayName = TASKSTRINGOLE2T(lpOleStr);
lpOleLink->Release();
if (sc != S_OK)
return sc;
// see if item is selected if specified
if (lpfIsSelected)
{
*lpfIsSelected = (m_pSelectedItem == pItem);
}
return S_OK;
}
示例11: SetLinkSource
STDMETHODIMP COleUILinkInfo::SetLinkSource(
DWORD dwLink, LPTSTR lpszDisplayName, ULONG lenFileName,
ULONG* pchEaten, BOOL fValidateSource)
{
USES_CONVERSION;
COleClientItem* pItem = (COleClientItem*)dwLink;
ASSERT_VALID(pItem);
ASSERT_KINDOF(COleClientItem, pItem);
ASSERT(pItem->GetType() == OT_LINK);
LPOLEOBJECT lpObject = NULL;
CLSID clsid;
// parse the portion known to be a file name into a file moniker
TCHAR szName[_MAX_PATH];
lstrcpyn(szName, lpszDisplayName, (int)lenFileName + 1);
LPMONIKER lpmk = NULL;
SCODE sc = CreateFileMoniker(T2COLE(szName), &lpmk);
if (lpmk == NULL)
return sc;
LPBC lpbc = NULL;
if (fValidateSource)
{
sc = CreateBindCtx(0, &lpbc);
if (sc != S_OK)
{
lpmk->Release();
return sc;
}
}
// nUneaten is the number of chars left to parse
UINT nUneaten = lstrlen(lpszDisplayName) - lenFileName;
// lpszRemainder is the left over display name
LPTSTR lpszRemainder = lpszDisplayName + lenFileName;
*pchEaten = lenFileName;
// parse the rest of the display name
while (nUneaten > 0)
{
// attempt to parse next moniker
ULONG nEaten = 0;
LPMONIKER lpmkNext = NULL;
sc = _AfxParseDisplayName(lpmk, lpbc, lpszRemainder, &nEaten, &lpmkNext);
if (sc != S_OK)
{
lpmk->Release();
lpbc->Release();
return sc;
}
// advance through the display name
nUneaten -= nEaten;
*pchEaten += nEaten;
lpszRemainder += nEaten;
if (lpmkNext != NULL)
{
// create composite out of current and next
LPMONIKER lpmkTemp = NULL;
sc = CreateGenericComposite(lpmk, lpmkNext, &lpmkTemp);
if (FAILED(sc))
{
lpmk->Release();
lpmkNext->Release();
lpbc->Release();
return sc;
}
// make current = next
lpmkNext->Release();
lpmk->Release();
lpmk = lpmkTemp;
}
}
if (fValidateSource)
{
// attempt to bind the the object
sc = lpmk->BindToObject(lpbc, NULL, IID_IOleObject, (LPLP)&lpObject);
if (FAILED(sc))
{
pItem->m_bLinkUnavail = TRUE;
lpbc->Release();
lpmk->Release();
RELEASE(lpObject);
return sc;
}
ASSERT(lpObject != NULL);
// call GetUserClassID while bound so default handler updates
lpObject->GetUserClassID(&clsid);
pItem->m_bLinkUnavail = FALSE;
}
// get IOleLink interface
LPOLELINK lpOleLink = QUERYINTERFACE(pItem->m_lpObject, IOleLink);
//.........这里部分代码省略.........
示例12: if
STDMETHODIMP COlePropertiesDialog::XOleUIObjInfo::GetObjectInfo(
DWORD dwObject, DWORD* lpdwObjSize, LPTSTR* lplpszLabel,
LPTSTR* lplpszType, LPTSTR* lplpszShortType, LPTSTR* lplpszLocation)
{
COleClientItem* pItem = (COleClientItem*)dwObject;
ASSERT_VALID(pItem);
BOOL bIsLink = (pItem->GetType() == OT_LINK);
if (lpdwObjSize != NULL)
{
ASSERT(pItem->m_lpStorage != NULL);
// try ILockBytes first, then IStorage
STATSTG statStg;
if ((pItem->m_lpLockBytes == NULL ||
pItem->m_lpLockBytes->Stat(&statStg, STATFLAG_NONAME) != S_OK) &&
pItem->m_lpStorage->Stat(&statStg, STATFLAG_NONAME) != S_OK)
{
*lpdwObjSize = 0xFFFFFFFF;
}
else
{
ASSERT(statStg.pwcsName == NULL);
if (statStg.cbSize.HighPart > 0)
*lpdwObjSize = 0xFFFFFFFE;
else if (statStg.cbSize.LowPart == 0)
*lpdwObjSize = 0xFFFFFFFF;
else
*lpdwObjSize = statStg.cbSize.LowPart;
}
}
if (lplpszLabel != NULL)
{
TCHAR szFormatLink[128];
AfxLoadString(AFX_IDS_PASTELINKEDTYPE, szFormatLink, _countof(szFormatLink));
TCHAR szFormatObj[] = _T("%s");
LPTSTR lpszFormat = bIsLink ? szFormatLink : szFormatObj;
CString strType;
pItem->GetUserType(USERCLASSTYPE_FULL, strType);
CString strResult;
strResult.Format(lpszFormat, (LPCTSTR)strType);
*lplpszLabel = AfxAllocTaskString(strResult);
}
if (lplpszType != NULL)
{
LPOLESTR lpOleStr;
pItem->m_lpObject->GetUserType(USERCLASSTYPE_FULL, &lpOleStr);
*lplpszType = TASKSTRINGOLE2T(lpOleStr);
}
if (lplpszShortType != NULL)
{
LPOLESTR lpOleStr;
pItem->m_lpObject->GetUserType(USERCLASSTYPE_SHORT, &lpOleStr);
*lplpszShortType = TASKSTRINGOLE2T(lpOleStr);
}
if (lplpszLocation != NULL)
{
if (bIsLink)
{
LPOLELINK lpOleLink = NULL;
pItem->m_lpObject->QueryInterface(IID_IOleLink, (LPVOID*)&lpOleLink);
ASSERT(lpOleLink != NULL);
LPOLESTR lpOleStr;
lpOleLink->GetSourceDisplayName(&lpOleStr);
*lplpszLocation = TASKSTRINGOLE2T(lpOleStr);
lpOleLink->Release();
}
else
{
CDocument* pDoc = (CDocument*)pItem->GetDocument();
CString strLocation = pDoc->GetPathName();
if (strLocation.IsEmpty())
strLocation = pDoc->GetTitle();
*lplpszLocation = AfxAllocTaskString(strLocation);
}
}
return S_OK;
}
示例13: AdjustObjectSubmenu
void CMainFrame::AdjustObjectSubmenu(CMFCPopupMenu* pMenuPopup)
{
ASSERT(pMenuPopup != NULL);
if (pMenuPopup->GetParentPopupMenu() != NULL)
{
return;
}
// <snippet7>
// CMFCPopupMenu* pMenuPopup
CMFCPopupMenuBar* pMenuBar = pMenuPopup->GetMenuBar();
// </snippet7>
ASSERT(pMenuBar != NULL);
// <snippet10>
// CMFCPopupMenuBar* pMenuBar
CMFCCustomizeMenuButton* pBtn = (CMFCCustomizeMenuButton*)pMenuBar->GetButton(0);
pBtn->EnableCustomization(true);
pBtn->SetSeparator();
// </snippet10>
int iIndex = pMenuBar->CommandToIndex(ID_OLE_VERB_FIRST);
if (iIndex < 0)
{
return;
}
CFrameWnd* pFrame = GetActiveFrame();
if (pFrame == NULL)
{
return;
}
CDrawDoc* pDoc = (CDrawDoc*)pFrame->GetActiveDocument();
ASSERT_VALID(pDoc);
// check for single selection
COleClientItem* pItem = pDoc->GetPrimarySelectedItem(pFrame->GetActiveView());
if (pItem == NULL || pItem->GetType() == OT_STATIC)
{
// no selection, or is 'static' item
return;
}
// only include Convert... if there is a handler for ID_OLE_EDIT_CONVERT
UINT nConvertID = ID_OLE_EDIT_CONVERT;
AFX_CMDHANDLERINFO info;
if (!pDoc->OnCmdMsg(ID_OLE_EDIT_CONVERT, CN_COMMAND, NULL, &info))
nConvertID = 0;
HMENU hMenu = pMenuBar->ExportToMenu();
ASSERT(hMenu != NULL);
// update the menu
AfxOleSetEditMenu(pItem, CMenu::FromHandle(hMenu), iIndex, ID_OLE_VERB_FIRST, ID_OLE_VERB_LAST, nConvertID);
pMenuBar->ImportFromMenu(hMenu);
::DestroyMenu(hMenu);
}