void CSiriusView::OnPaint() { if (GetListCtrl().GetItemCount() == 0) { // show empty list message CPaintDC dc( this ); int nSavedDC = dc.SaveDC(); CRect rc; GetClientRect( &rc ); CHeaderCtrl* pHC; pHC = GetListCtrl().GetHeaderCtrl(); if (pHC != NULL) { CRect rcH; pHC->GetItemRect( 0, &rcH ); rc.top += rcH.bottom; } rc.top += 10; CString strText; if (g_bStarted) strText.LoadString(IDS_NODATA); else strText.LoadString(IDS_BEGIN); dc.SetTextColor( ::GetSysColor( COLOR_WINDOWTEXT ) ); dc.SetBkColor( ::GetSysColor( COLOR_WINDOW ) ); dc.SelectStockObject( ANSI_VAR_FONT ); dc.DrawText( strText, rc, DT_CENTER | DT_WORDBREAK | DT_NOPREFIX | DT_NOCLIP ); dc.RestoreDC(nSavedDC); } else { Default(); } }
void CListCtrlEx::InsertProgresCtrl(int iIndex, int iStatus) { CHeaderCtrl* pHeader = GetHeaderCtrl(); CRect ColRt; pHeader->GetItemRect(m_iProgressColumn, &ColRt); //get the rect CRect rt; GetItemRect(iIndex, &rt, LVIR_LABEL); rt.top += 1; rt.bottom -= 1; rt.left += ColRt.left; int Width = ColRt.Width(); rt.right = rt.left + Width - 4; rt.left = ColRt.left+1; rt.right = ColRt.right-1; CProgressCtrl *pControl = new CProgressCtrl; pControl->Create(WS_CHILD|WS_VISIBLE, rt, this, IDC_PROGRESS_LIST + iIndex); pControl->SetRange(0, 100); pControl->SetPos(iStatus); pControl->ShowWindow(SW_SHOWNOACTIVATE); //add them to the list m_ProgressList.push_back(pControl); }
void CNBBindListViewCtrl::OnPaint(HDC /*wParam*/) { CRect rtCol, rtHeader, rtSubItem; CHeaderCtrl header = GetHeader(); header.GetWindowRect( rtHeader ); ScreenToClient( rtHeader ); header.GetItemRect( 0, rtCol) ; rtCol.OffsetRect( rtHeader.TopLeft() ); while ( !m_vtRowHeader.empty() ) { CCustomStaticCtrl *pWnd = m_vtRowHeader.front(); m_vtRowHeader.pop_front(); pWnd->DestroyWindow(); delete pWnd; } // For vertical scroll. if ( GetItemCount() > 0 ) { GetSubItemRect(0, 0, LVIR_BOUNDS, rtSubItem); } else { rtSubItem.top = rtCol.bottom; } for ( UINT i=0; i < m_nMaxCount; i++ ) { CCustomStaticCtrl *pWnd; CStatic staticCtrl; pWnd = new CCustomStaticCtrl; CRect rtItem; static int nHeight = 14; rtItem.left = rtCol.left; rtItem.right = rtCol.right-2; rtItem.top = rtSubItem.top + i * nHeight; rtItem.bottom = rtItem.top + nHeight-1; if ( rtItem.top < rtCol.bottom ) continue; WTL::CString strTitle; strTitle.Format(_T("%d"), i); staticCtrl.Create( m_hWnd, rtItem, strTitle, WS_CHILD | SS_CENTER | WS_DISABLED); staticCtrl.ShowWindow( SW_SHOW ); pWnd->SubclassWindow( staticCtrl.m_hWnd ); m_vtRowHeader.push_back( pWnd ); } DefWindowProc(); }
void CListCtrlEx::OnPaint() { int i; int Top = GetTopIndex(); int Total = GetItemCount(); int PerPage = GetCountPerPage(); int Last = ((Top+PerPage) > Total)? Total : Top+PerPage; int Count = m_ProgressList.GetSize(); CProgressCtrl* pCtrl; if ((Last-Top) > Count) { for (i = Count; i < Last-Top; i++) { pCtrl = new CProgressCtrl(); CRect rt(1,1,1,1); pCtrl->Create(NULL, rt, this, IDC_PROGRESS_LIST+i); m_ProgressList.Add(pCtrl); } } CHeaderCtrl* pHeader = GetHeaderCtrl(); for (i = Top; i < Last; i++) { CRect ColRt; pHeader->GetItemRect(m_ProgressColumn, &ColRt); CRect rt; GetItemRect(i, &rt, LVIR_LABEL); rt.top += 1; rt.bottom -= 1; rt.left += ColRt.left; rt.right = rt.left + ColRt.Width() - 4; pCtrl = m_ProgressList.GetAt(i-Top); CString strPercent = GetItemText(i, m_ProgressColumn); int nPercent = atoi(strPercent); pCtrl->SetPos(nPercent); pCtrl->MoveWindow(&rt); pCtrl->ShowWindow(SW_SHOWNORMAL); } CListCtrl::OnPaint(); }
void CHintListCtrl::OnPaint() { Default(); if (!m_sText.IsEmpty()) { COLORREF clrText = ::GetSysColor(COLOR_WINDOWTEXT); COLORREF clrTextBk; if (IsWindowEnabled()) clrTextBk = ::GetSysColor(COLOR_WINDOW); else clrTextBk = ::GetSysColor(COLOR_3DFACE); CRect rc; GetClientRect(&rc); CHeaderCtrl* pHC; pHC = GetHeaderCtrl(); if (pHC != NULL) { CRect rcH; rcH.SetRectEmpty(); pHC->GetItemRect(0, &rcH); rc.top += rcH.bottom; } CDC* pDC = GetDC(); { CMyMemDC memDC(pDC, &rc); memDC.SetTextColor(clrText); memDC.SetBkColor(clrTextBk); memDC.FillSolidRect(rc, clrTextBk); rc.top += 10; CGdiObject * oldfont = memDC.SelectStockObject(DEFAULT_GUI_FONT); memDC.DrawText(m_sText, rc, DT_CENTER | DT_VCENTER | DT_WORDBREAK | DT_NOPREFIX | DT_NOCLIP); memDC.SelectObject(oldfont); } ReleaseDC(pDC); } CRect rc; GetUpdateRect(&rc, FALSE); ValidateRect(rc); }
void CEmptyListCtrl::OnPaint() { Default(); if (GetItemCount() <= 0) { COLORREF clrText = ::g_PaintManager->GetColor(COLOR_WINDOWTEXT); COLORREF clrTextBk = ::g_PaintManager->GetColor(COLOR_WINDOW); CDC* pDC = GetDC(); // Save dc state int nSavedDC = pDC->SaveDC(); CRect rc; GetWindowRect(&rc); ScreenToClient(&rc); CHeaderCtrl* pHC; pHC = GetHeaderCtrl(); if (pHC != NULL) { CRect rcH; pHC->GetItemRect(0, &rcH); rc.top += rcH.bottom; } rc.top += 10; CString strText; // The message you want! strText = OI_NONE; pDC->SetTextColor(clrText); pDC->SetBkColor(clrTextBk); pDC->FillRect(rc, &CBrush(clrTextBk)); pDC->SelectObject(&m_Font); pDC->DrawText(strText, -1, rc, DT_CENTER | DT_WORDBREAK | DT_NOPREFIX | DT_NOCLIP); // Restore dc pDC->RestoreDC(nSavedDC); ReleaseDC(pDC); } // Do not call CListCtrl::OnPaint() for painting messages }
/****************************************************************************** Function Name : vInitMemDCRect Input(s) : - Output : - Functionality : This function will update the screen rectangle. This will shift the display down to exclude the header control area Member of : CFFListCtrl Author(s) : Raja N Date Created : 23.06.2004 Modification : ******************************************************************************/ void CFFListCtrl::vInitMemDCRect() { // Get the screen rectangle GetClientRect(&m_rectClient); CHeaderCtrl* pHC; // Get the Header Control pHC = GetHeaderCtrl(); if (pHC != nullptr) { CRect rectHeader; // Get the size of Header BOOL bSuccess = pHC->GetItemRect( 0, &rectHeader ); if(bSuccess == TRUE ) { // Shift the screen rectangle down m_rectClient.top += rectHeader.bottom; m_rectClient.bottom += rectHeader.bottom; } } }
/********************************************************************************** Function Name : OnSize Input(s) : nType - type of rezsizing cx - width of the client area cy - height of trhe client area Output : - Functionality : To resize the window controls after the window has resized Member of : CFlickerFreeListCtrl Friend of : - Authors : Ravi D Date Created : 19/09/2006 Modifications : - ************************************************************************************/ void CFlickerFreeListCtrl::OnSize(UINT nType, int cx, int cy) { CListCtrl::OnSize(nType, cx, cy); // TODO: Add your message handler code here GetClientRect(&m_rectClient); CHeaderCtrl* pHC; // Get the Header Control pHC = GetHeaderCtrl(); if (pHC != NULL) { CRect rectHeader; // Get the size of Header BOOL bSuccess = pHC->GetItemRect( 0, &rectHeader ); if(bSuccess == TRUE ) { // Shift the screen rectangle down m_rectClient.top += rectHeader.bottom; m_rectClient.bottom += rectHeader.bottom; } } }
void ColumnManager::OnContextMenuHeader(CWnd* pWnd, CPoint point, bool isGroundEnable /* = false*/) { CHeaderCtrl* pHeaderCtrl = (CHeaderCtrl*)pWnd; if ((point.x == -1) && (point.y == -1)) { CRect rect; pHeaderCtrl->GetItemRect(0, &rect); pHeaderCtrl->ClientToScreen(&rect); point = rect.CenterPoint(); } CMenu popup; if (popup.CreatePopupMenu()) { int columnCount = GetColumnCount(); CString temp; UINT uCheckedFlags = MF_STRING | MF_ENABLED | MF_CHECKED; UINT uUnCheckedFlags = MF_STRING | MF_ENABLED; // build control menu //temp.LoadString(IDS_STATUSLIST_SHOWGROUPS); //popup.AppendMenu(isGroundEnable? uCheckedFlags : uUnCheckedFlags, columnCount, temp); temp.LoadString(IDS_STATUSLIST_RESETCOLUMNORDER); popup.AppendMenu(uUnCheckedFlags, columnCount + 2, temp); popup.AppendMenu(MF_SEPARATOR); // standard columns AddMenuItem(&popup); // user-prop columns: // find relevant ones and sort 'em std::map<CString, int> sortedProps; for (int i = (int)itemName.size(); i < columnCount; ++i) if (IsRelevant(i)) sortedProps[GetName(i)] = i; if (!sortedProps.empty()) { // add 'em to the menu popup.AppendMenu(MF_SEPARATOR); for (auto iter = sortedProps.cbegin(), end = sortedProps.cend(); iter != end; ++iter) { popup.AppendMenu(IsVisible(iter->second) ? uCheckedFlags : uUnCheckedFlags , iter->second , iter->first); } } // show menu & let user pick an entry int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, pWnd); if ((cmd >= 1) && (cmd < columnCount)) SetVisible(cmd, !IsVisible(cmd)); else if (cmd == columnCount) { pWnd->GetParent()->SendMessage(LVM_ENABLEGROUPVIEW, !isGroundEnable, NULL); //EnableGroupView(!isGroundEnable); } else if (cmd == columnCount + 1) RemoveUnusedProps(); else if (cmd == columnCount + 2) { temp.LoadString(IDS_CONFIRMRESETCOLUMNORDER); if (MessageBox(pWnd->m_hWnd, temp, L"TortoiseGit", MB_YESNO | MB_ICONQUESTION) == IDYES) ResetColumns(m_dwDefaultColumns); } } }