//****************************************************************************
void CBCGPFrameWnd::OnUpdateFrameMenu (HMENU hMenuAlt)
{
    CFrameWnd::OnUpdateFrameMenu (hMenuAlt);

    BOOL bIsMenuBar = m_Impl.m_pMenuBar != NULL &&
                      (m_Impl.m_pMenuBar->GetStyle () & WS_VISIBLE);

    BOOL bIsRibbon = FALSE;

#ifndef BCGP_EXCLUDE_RIBBON
    if (m_Impl.m_pRibbonBar != NULL &&
            (m_Impl.m_pRibbonBar->GetStyle () & WS_VISIBLE))
    {
        bIsRibbon = TRUE;
    }
#endif

    if (bIsMenuBar || bIsRibbon)
    {
        COleClientItem*	pActiveItem = GetInPlaceActiveItem ();
        if (pActiveItem == NULL ||
                pActiveItem->GetInPlaceWindow () == NULL)
        {
            SetMenu (NULL);
        }
        else
        {
            SetMenu (CMenu::FromHandle (hMenuAlt));
        }
    }
}
Exemple #2
0
// Special handling of OnSetFocus and OnSize are required for a container
//  when an object is being edited in-place.
void CMy1553View::OnSetFocus(CWnd* pOldWnd)
{
    COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
    if (pActiveItem != NULL &&
            pActiveItem->GetItemState() == COleClientItem::activeUIState)
    {
        // need to set focus to this item if it is in the same view
        CWnd* pWnd = pActiveItem->GetInPlaceWindow();
        if (pWnd != NULL)
        {
            pWnd->SetFocus();   // don't call the base class
            return;
        }
    }

    CView::OnSetFocus(pOldWnd);
}
// 在就地编辑一个对象时,容器需要对 OnSetFocus 和 OnSize 
//  进行特殊处理
void CClientView::OnSetFocus(CWnd* pOldWnd)
{
	COleClientItem* pActiveItem = GetDocument()->GetInPlaceActiveItem(this);
	if (pActiveItem != NULL &&
		pActiveItem->GetItemState() == COleClientItem::activeUIState)
	{
		// 如果该项处于同一视图中,则需要将焦点设置到该项
		CWnd* pWnd = pActiveItem->GetInPlaceWindow();
		if (pWnd != NULL)
		{
			pWnd->SetFocus();   // 不要调用基类
			return;
		}
	}

	CView::OnSetFocus(pOldWnd);
}