本文整理汇总了C++中TopWindow::refresh方法的典型用法代码示例。如果您正苦于以下问题:C++ TopWindow::refresh方法的具体用法?C++ TopWindow::refresh怎么用?C++ TopWindow::refresh使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TopWindow
的用法示例。
在下文中一共展示了TopWindow::refresh方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: refreshRect
void GenericLayout::refreshRect( int x, int y, int width, int height )
{
// Do nothing if the layout is hidden
if( !m_visible )
return;
// Draw all the controls of the layout
list<LayeredControl>::const_iterator iter;
list<LayeredControl>::const_iterator iterVideo = m_controlList.end();
for( iter = m_controlList.begin(); iter != m_controlList.end(); iter++ )
{
CtrlGeneric *pCtrl = (*iter).m_pControl;
const Position *pPos = pCtrl->getPosition();
if( pPos && pCtrl->isVisible() )
{
pCtrl->draw( *m_pImage, pPos->getLeft(), pPos->getTop() );
}
}
// Refresh the associated window
TopWindow *pWindow = getWindow();
if( pWindow )
{
// Check boundaries
if( x < 0 )
x = 0;
if( y < 0)
y = 0;
if( x + width > m_width )
width = m_width - x;
if( y + height > m_height )
height = m_height - y;
// Refresh the window... but do not paint on a visible video control!
if( !m_pVideoControl || !m_pVideoControl->isVisible() )
{
// No video control, we can safely repaint the rectangle
pWindow->refresh( x, y, width, height );
}
else
{
// Bad luck, there is a video control somewhere (not necessarily
// in the repainting zone, btw).
// We will divide the repainting into 4 regions (top, left, bottom
// and right). The overlapping parts (i.e. the corners) of these
// regions will be painted twice, because otherwise the algorithm
// becomes a real mess :)
// Use short variable names for convenience
int xx = m_pVideoControl->getPosition()->getLeft();
int yy = m_pVideoControl->getPosition()->getTop();
int ww = m_pVideoControl->getPosition()->getWidth();
int hh = m_pVideoControl->getPosition()->getHeight();
// Top part:
if( y < yy )
pWindow->refresh( x, y, width, yy - y );
// Left part:
if( x < xx )
pWindow->refresh( x, y, xx - x, height );
// Bottom part
if( y + height > yy + hh )
pWindow->refresh( x, yy + hh, width, y + height - (yy + hh) );
// Right part
if( x + width > xx + ww )
pWindow->refresh( xx + ww, y, x + width - (xx + ww), height );
}
}
}