LRESULT CHeaderCtrlExt::OnHdnEndDrag(WPARAM wParam, LPARAM lParam) { int nCount = GetItemCount(); int* piArray = new int[nCount]; GetOrderArray(piArray, nCount); SetOrderArray(nCount, piArray); delete []piArray; return 1; }
void CHeaderCtrlExt::SetVisible(int nIndex, BOOL bVisible) { CItemData* pData = (CItemData*)GetItemData(nIndex); if(! pData)return; if(pData->m_bVisible != bVisible) { pData->m_bVisible = bVisible; // get total items int nCount = GetItemCount(); // get current item's order int nOrder = IndexToOrder(nIndex); int* piCols = new int[nCount]; ASSERT(piCols); GetOrderArray(piCols, nCount); if(bVisible) { // restore item width ResetItemWidth(nIndex); // move the item to the original position int nTarget; int nVisible = GetVisibleItemCount(); if(nIndex > nVisible - 1)nTarget = nVisible - 1; else nTarget = nIndex; ASSERT(nTarget <= nOrder); for(int i = nOrder;i > nTarget;--i)piCols[i] = piCols[i - 1]; piCols[nTarget] = nIndex; } else { // hide item SetItemWidth(nIndex, 0); } SetOrderArray(nCount, piCols); delete []piCols; } }
BOOL CEnHeaderCtrl::SetItemOrder(const CIntArray& aOrder) { return SetOrderArray(aOrder.GetSize(), (LPINT)aOrder.GetData()); }