当前位置: 首页>>代码示例>>C++>>正文


C++ Widget::GetParent方法代码示例

本文整理汇总了C++中Widget::GetParent方法的典型用法代码示例。如果您正苦于以下问题:C++ Widget::GetParent方法的具体用法?C++ Widget::GetParent怎么用?C++ Widget::GetParent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Widget的用法示例。


在下文中一共展示了Widget::GetParent方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: UpdateMouseOverWidget

/**
*  @brief
*    Update mouse-over widget
*/
void Gui::UpdateMouseOverWidget()
{
	// Has the mouse-over widget changed?
	if (m_pMouseOverWidget != m_pMouseOverWidgetNew) {
		// Get old mouse-over widget
		Widget *m_pMouseOverWidgetOld = m_pMouseOverWidget;

		// Save new mouse-over widget
		m_pMouseOverWidget = m_pMouseOverWidgetNew;

		// Get common parent of old mouse-over widget and the new one
		Widget *pParent = (m_pMouseOverWidgetOld && m_pMouseOverWidgetNew) ? m_pMouseOverWidgetNew->GetCommonParent(*m_pMouseOverWidgetOld) : nullptr;

		// Choose where to stop (include parent itself only when necessary)
		Widget *pStop = pParent;
		if (m_pMouseOverWidgetOld == pParent || m_pMouseOverWidgetNew == pParent) {
			pStop = (pParent ? pParent->GetParent() : nullptr);
		}

		// Inform old widgets, that they are no longer mouse-over widgets
		Widget *pWidget = m_pMouseOverWidgetOld;
		while (pWidget && pWidget != pStop) {
			// Send mouse-over message
			SendMessage(GuiMessage::OnMouseOver(pWidget, false));

			// Next widget
			pWidget = pWidget->GetParent();
		}

		// Inform new widgets, that they are now mouse-over widgets
		pWidget = m_pMouseOverWidgetNew;
		while (pWidget && pWidget != pStop) {
			// Send mouse-over message
			SendMessage(GuiMessage::OnMouseOver(pWidget, true));

			// Next widget
			pWidget = pWidget->GetParent();
		}

		// Start hover timer
		if (m_pMouseOverWidget) {
			// Create timer if it has not yet been created
			if (!m_pHoverTimer && m_nHoverTime > 0) {
				m_pHoverTimer = new Timer(*this);
				m_pHoverTimer->EventFire.Connect(EventHandlerOnHoverTimer);
			}

			// Start timer
			if (!m_pHoverTimer->IsActive())
				m_pHoverTimer->StartOnce(m_nHoverTime);
		}
	}
}
开发者ID:G-Ray,项目名称:pixellight,代码行数:57,代码来源:Gui.cpp

示例2: Destroy

BOOL WidDispatch::Destroy( HWID& hWid )
{
	std::map<HWID, Widget*>::iterator it =
		m_Handle2Object.find(hWid);
	if (it == m_Handle2Object.end())
	{
		return FALSE;
	}
	Widget* pWid = it->second;
	WFX_CONDITION(pWid != NULL);
	Widget* pParent = pWid->GetParent();
	if (pParent != NULL)
	{
		pParent->RemoveChild(pWid);
	}
	m_Handle2Object.erase(it);
	std::map<HWID, Widget*>::iterator itPaint = 
		m_h2oOrphan.find(hWid);
	if (itPaint != m_h2oOrphan.end())
	{
		m_h2oOrphan.erase(itPaint);
	}
	if (m_h2oCaptured.first == hWid)
	{
		ClearH2O(m_h2oCaptured);
	}
	m_pTimer->Destroy(pWid);
	RecycleHwid(hWid);
	return TRUE;
}
开发者ID:MartinWei,项目名称:wfc,代码行数:30,代码来源:Dispatch.cpp

示例3:

/**
*  @brief
*    Get top level widget that is parent of this widget
*/
Widget *Widget::GetTopLevelWidget() const
{
	// Start with this widget
	Widget *pWidget = const_cast<Widget*>(this);

	// Find top-level widget in hierarchy
	while (pWidget && !pWidget->IsTopLevel())
		pWidget = pWidget->GetParent();

	// Return widget
	return pWidget;
}
开发者ID:ByeDream,项目名称:pixellight,代码行数:16,代码来源:Widget.cpp

示例4: UpdateFocusWidget

/**
*  @brief
*    Update focus widget
*/
void Gui::UpdateFocusWidget()
{
	// Has the focus widget changed?
	if (m_pFocusWidget != m_pFocusWidgetNew) {
		// Get old focus widget
		Widget *m_pFocusWidgetOld = m_pFocusWidget;

		// Save new focus widget
		m_pFocusWidget = m_pFocusWidgetNew;

		// Get common parent of old focus widget and the new one
		Widget *pParent = (m_pFocusWidgetOld && m_pFocusWidgetNew) ? m_pFocusWidgetNew->GetCommonParent(*m_pFocusWidgetOld) : nullptr;

		// Choose where to stop (include parent itself only when necessary)
		Widget *pStop = pParent;
		if (m_pFocusWidgetOld == pParent || m_pFocusWidgetNew == pParent) {
			pStop = (pParent ? pParent->GetParent() : nullptr);
		}

		// Inform old widgets, that they are no longer activated
		Widget *pWidget = m_pFocusWidgetOld;
		while (pWidget && pWidget != pStop) {
			// Send activate message
			SendMessage(GuiMessage::OnActivate(pWidget, false));

			// Next widget
			pWidget = pWidget->GetParent();
		}

		// Inform new widgets, that they are now activated
		pWidget = m_pFocusWidgetNew;
		while (pWidget && pWidget != pStop) {
			// Send activate message
			SendMessage(GuiMessage::OnActivate(pWidget, true));

			// Next widget
			pWidget = pWidget->GetParent();
		}
	}
}
开发者ID:G-Ray,项目名称:pixellight,代码行数:44,代码来源:Gui.cpp

示例5: SendMessage

/**
*  @brief
*    Send and process a message directly
*/
void Gui::SendMessage(const GuiMessage &cMessage)
{
	// Pass message to message filters
	for (uint32 i=0; i<m_lstMessageFilters.GetNumOfElements(); i++) {
		// Pass message to filter
		m_lstMessageFilters[i]->AddMessage(cMessage);
	}

	// Get widget
	Widget *pWidget = cMessage.GetWidget();

	// Process message
	switch (cMessage.GetType()) {
		// Exit application
		case MessageOnExit:
			// Set flag to leave application
			m_bActive = false;

			// Skip passing message to widget
			return;

		// Timer fired
		case MessageOnTimer:
		{
			// Get timer
			Timer *pTimer = cMessage.GetTimer();

			// Discard message, if the timer has already been destroyed
			if (pTimer && m_lstTimers.IsElement(pTimer)) {
				// Fire timer
				pTimer->Fire();
			}

			// Skip passing message to widget
			return;
		}

		// Widget has been destroyed
		case MessageOnDestroy:
			// Remove from parent widget
			if (pWidget->GetParent()) {
				pWidget->GetParent()->RemoveChild(pWidget);
			}

			// Remove from list of top-level widgets
			if (m_lstTopLevelWidgets.IsElement(pWidget)) {
				m_lstTopLevelWidgets.Remove(pWidget);
			}

			// Add widget to list of destroyed widgets
			m_lstDestroyedWidgets.Add(pWidget);

			// Pass message on to widget
			break;

		// Mouse has entered a widget
		case MessageOnMouseEnter:
			// Set new mouse-over widget
			if (m_pMouseOverWidget != pWidget) {
				// Update mouse-over widget
				m_pMouseOverWidgetNew = pWidget;
				UpdateMouseOverWidget();
			}
			break;

		// Mouse has left a widget
		case MessageOnMouseLeave:
			// Reset mouse-over widget
			if (m_pMouseOverWidget == pWidget) {
				// Update mouse-over widget
				m_pMouseOverWidgetNew = nullptr;
				UpdateMouseOverWidget();
			}
			break;

		// Widget has got the focus
		case MessageOnGetFocus:
			// Set focus widget
			if (m_pFocusWidget != pWidget) {
				// Update focus widget
				m_pFocusWidgetNew = pWidget;
				UpdateFocusWidget();
			}
			break;

		// Widget has lost the focus
		case MessageOnLooseFocus:
			// Set focus widget
			if (m_pFocusWidget == pWidget) {
				// Update focus widget
				m_pFocusWidgetNew = nullptr;
				UpdateFocusWidget();
			}
			break;

		case MessageOnUnknown:
//.........这里部分代码省略.........
开发者ID:G-Ray,项目名称:pixellight,代码行数:101,代码来源:Gui.cpp


注:本文中的Widget::GetParent方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。