本文整理汇总了C++中CObArray::GetData方法的典型用法代码示例。如果您正苦于以下问题:C++ CObArray::GetData方法的具体用法?C++ CObArray::GetData怎么用?C++ CObArray::GetData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CObArray
的用法示例。
在下文中一共展示了CObArray::GetData方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ArrangeWindowsInWindow
//--------------------------------------------------------------------------------
void ArrangeWindowsInWindow (CWnd * pParentWnd, CObArray & arrWnd, DWORD dwOrient)
// Arranges the windows within the rectangle of another window.
//--------------------------------------------------------------------------------
{
if (arrWnd.GetSize() == 0) // no windows to size.. do nothing
return;
CRect ClientRect;
pParentWnd->GetClientRect(&ClientRect);
CSize ParentSize = ClientRect.Size();
if (ParentSize.cy == 0)
return; // no height => not much we can do
CObList SpcList; // list used to keep track of window spacing
// add initial Arrange rectangle to the list;
CWndSpaceElt * pSpcElt = new CWndSpaceElt;
pSpcElt->wd = 0;
pSpcElt->ht = ClientRect.Height();
SpcList.AddTail(pSpcElt);
// sort array of window positions by size so that we position the largest windows first.
// this improves the results quite a bit
CObject ** pArrData = arrWnd.GetData();
ASSERT(pArrData != NULL); // shouldn't be NULL as array is non-empty, but check anyway
qsort(pArrData, arrWnd.GetSize(), sizeof(CObject *), CompareWndRect);
HDWP hDWP = BeginDeferWindowPos(arrWnd.GetSize()); // defer window moves to save on refresh
// iterate thru all the windows in the list looking for a position to put it
for (int nWndNo = 0; nWndNo < arrWnd.GetSize(); nWndNo++)
{
CWnd * pWnd = (CWnd *)arrWnd[nWndNo];
ASSERT(pWnd != NULL);
ASSERT_VALID(pWnd);
PositionInSpcList(pWnd, SpcList, dwOrient, pParentWnd, ParentSize, hDWP);
}
if (hDWP != NULL)
::EndDeferWindowPos(hDWP); // move the windows
// Remove elements from the SpcList;
while (!SpcList.IsEmpty())
{
CWndSpaceElt * pElt = (CWndSpaceElt *) SpcList.GetTail();
delete pElt;
SpcList.RemoveTail();
}
}