本文整理汇总了C++中wxMoveEvent::GetRect方法的典型用法代码示例。如果您正苦于以下问题:C++ wxMoveEvent::GetRect方法的具体用法?C++ wxMoveEvent::GetRect怎么用?C++ wxMoveEvent::GetRect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxMoveEvent
的用法示例。
在下文中一共展示了wxMoveEvent::GetRect方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnMoveEvent
void wxAuiFloatingFrame::OnMoveEvent(wxMoveEvent& event)
{
if (!m_solid_drag)
{
// systems without solid window dragging need to be
// handled slightly differently, due to the lack of
// the constant stream of EVT_MOVING events
if (!isMouseDown())
return;
OnMoveStart();
OnMoving(event.GetRect(), wxNORTH);
m_moving = true;
return;
}
wxRect win_rect = GetRect();
if (win_rect == m_last_rect)
return;
// skip the first move event
if (m_last_rect.IsEmpty())
{
m_last_rect = win_rect;
return;
}
// skip if moving too fast to avoid massive redraws and
// jumping hint windows
if ((abs(win_rect.x - m_last_rect.x) > 3) ||
(abs(win_rect.y - m_last_rect.y) > 3))
{
m_last3_rect = m_last2_rect;
m_last2_rect = m_last_rect;
m_last_rect = win_rect;
return;
}
// prevent frame redocking during resize
if (m_last_rect.GetSize() != win_rect.GetSize())
{
m_last3_rect = m_last2_rect;
m_last2_rect = m_last_rect;
m_last_rect = win_rect;
return;
}
wxDirection dir = wxALL;
int horiz_dist = abs(win_rect.x - m_last3_rect.x);
int vert_dist = abs(win_rect.y - m_last3_rect.y);
if (vert_dist >= horiz_dist)
{
if (win_rect.y < m_last3_rect.y)
dir = wxNORTH;
else
dir = wxSOUTH;
}
else
{
if (win_rect.x < m_last3_rect.x)
dir = wxWEST;
else
dir = wxEAST;
}
m_last3_rect = m_last2_rect;
m_last2_rect = m_last_rect;
m_last_rect = win_rect;
if (!isMouseDown())
return;
if (!m_moving)
{
OnMoveStart();
m_moving = true;
}
if (m_last3_rect.IsEmpty())
return;
OnMoving(event.GetRect(), dir);
}
示例2: OnMoveEvent
void wxAuiFloatingFrame::OnMoveEvent(wxMoveEvent& event)
{
if (!m_solidDrag)
{
// systems without solid window dragging need to be
// handled slightly differently, due to the lack of
// the constant stream of EVT_MOVING events
if (!isMouseDown())
return;
OnMoveStart();
OnMoving(event.GetRect(), wxNORTH);
m_moving = true;
return;
}
wxRect winRect = GetRect();
if (winRect == m_lastRect)
return;
// skip the first move event
if (m_lastRect.IsEmpty())
{
m_lastRect = winRect;
return;
}
// as on OSX moving windows are not getting all move events, only sporadically, this difference
// is almost always big on OSX, so avoid this early exit opportunity
#ifndef __WXOSX__
// skip if moving too fast to avoid massive redraws and
// jumping hint windows
if ((abs(winRect.x - m_lastRect.x) > 3) ||
(abs(winRect.y - m_lastRect.y) > 3))
{
m_last3Rect = m_last2Rect;
m_last2Rect = m_lastRect;
m_lastRect = winRect;
// However still update the internally stored position to avoid
// snapping back to the old one later.
if (m_ownerMgr)
{
m_ownerMgr->GetPane(m_paneWindow).
floating_pos = winRect.GetPosition();
}
return;
}
#endif
// prevent frame redocking during resize
if (m_lastRect.GetSize() != winRect.GetSize())
{
m_last3Rect = m_last2Rect;
m_last2Rect = m_lastRect;
m_lastRect = winRect;
return;
}
wxDirection dir = wxALL;
int horiz_dist = abs(winRect.x - m_last3Rect.x);
int vert_dist = abs(winRect.y - m_last3Rect.y);
if (vert_dist >= horiz_dist)
{
if (winRect.y < m_last3Rect.y)
dir = wxNORTH;
else
dir = wxSOUTH;
}
else
{
if (winRect.x < m_last3Rect.x)
dir = wxWEST;
else
dir = wxEAST;
}
m_last3Rect = m_last2Rect;
m_last2Rect = m_lastRect;
m_lastRect = winRect;
if (!isMouseDown())
return;
if (!m_moving)
{
OnMoveStart();
m_moving = true;
}
if (m_last3Rect.IsEmpty())
return;
if ( event.GetEventType() == wxEVT_MOVING )
OnMoving(event.GetRect(), dir);
else
//.........这里部分代码省略.........