void Window::DrawOnRegion() { if (!m_bVisible) return; TYPE_WindowColor& colors = m_pWinData->win.color; CRect rcTitle(CPoint(m_pWinData->win.titleX, m_pWinData->win.titleY), CSize(m_pWinData->win.titleW, m_pWinData->win.titleH)); m_pRegion->DrawTextInBox(rcTitle, m_sTitle, colors.titleText, colors.titleBack, colors.border, 0, 1, DT_CENTER|DT_VCENTER); CRect rcBody(CPoint(m_pWinData->win.bodyX, m_pWinData->win.bodyY), CSize(m_pWinData->win.bodyW, m_pWinData->win.bodyH)); m_pRegion->DrawFilledBox(rcBody, m_pWinData->win.color.bodyBack, m_pWinData->win.color.border); int itemsOnScreen = CalcItemsOnScreen(); int itemHeight = CalcItemHeight(); for (int i=0 ; i<itemsOnScreen ; i++) { int iIndex = i + m_pWinData->startPos; if (iIndex >= m_pWinData->itemNum) break; int yOffs = i * itemHeight; CRect rcBox(CPoint(m_pWinData->win.bodyX, m_pWinData->win.bodyY + yOffs), CSize(m_pWinData->win.bodyW, itemHeight)); m_pRegion->DrawTextInBox(rcBox, m_sItems[iIndex], colors.bodyText, iIndex == m_pWinData->currentPos ? colors.check : colors.bodyBack, colors.border, 0, 1, DT_LEFT|DT_VCENTER); } }
void CPageBase::OnPaint() { CPaintDC dc(this); //填充标题栏背景 CRect rcWnd; GetClientRect(&rcWnd); CRect rcTitle(1,1,rcWnd.right-1,rcWnd.top+25); dc.FillSolidRect(&rcTitle,RGB(46,64,94)); //绘制标题 if(m_pszTitle!=NULL) { CFont font; font.CreateFontIndirect(&m_lfBaseFont); CFont * pOldFont=dc.SelectObject(&font); int nOldBkMod=dc.SetBkMode(TRANSPARENT); DWORD dwOldTxtColor=dc.SetTextColor(RGB(255,255,255)); CSize cz=dc.GetTextExtent(m_pszTitle); int nTitleL=4; int nTitleT=(24-cz.cy)/2+1; dc.TextOut(nTitleL,nTitleT,m_pszTitle,_tcslen(m_pszTitle)); dc.SetTextColor(dwOldTxtColor); dc.SetBkMode(nOldBkMod); dc.SelectObject(pOldFont); } }
LRESULT CMainDlg::OnNcHitTest(CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CRect rc; GetClientRect(&rc); CRect rcTitle(0,0,rc.Width(),100); ClientToScreen(&rcTitle); return rcTitle.PtInRect(point)?HTCAPTION:CDialog::OnNcHitTest(point); //return CDialogEx::OnNcHitTest(point); }
BOOL CXTPDockingPaneTabbedContainer::CanAttach(CRect& rcClient, CPoint pt) const { CRect rcTitle(rcClient); BOOL bVertical = IsCaptionVertical(); if (m_bTitleVisible) { if (bVertical) { rcClient.left += CXTPDockingPaneBase::GetPaintManager()->GetCaptionHeight() + 3; } else { rcClient.top += CXTPDockingPaneBase::GetPaintManager()->GetCaptionHeight() + 3; } } else { SAFE_CALLPTR(m_pDockingSite, GetWindowRect(rcTitle)); } if (bVertical) { rcTitle.right = rcClient.left; } else { rcTitle.bottom = rcClient.top; } if (rcTitle.PtInRect(pt)) return TRUE; if (IsTabsVisible()) { CRect rcTabs(rcClient); rcClient.bottom -= CXTPDockingPaneBase::GetPaintManager()->GetTabsHeight(); rcTabs.top = rcClient.bottom; if (rcTabs.PtInRect(pt)) return TRUE; } return FALSE; }
void TrackListCtrl::DrawItem(Gdiplus::Graphics& g, INT nItem, Gdiplus::Rect& itemRC) { HDC hdc = g.GetHDC(); if (hdc == 0) { TRACE(_T("@1 TrackListCtrl::DrawItem. Cant get HDC\r\n")); return; } CDC* pDC = CDC::FromHandle(hdc); PrgAPI* pAPI = PRGAPI(); //Calculate Colors BOOL bSelected = IsItemSelected(nItem); COLORREF clrText = m_colors[COL_Text]; COLORREF clrBk = m_colors[COL_Bk]; if (bSelected) { clrText = m_colors[COL_TextSel]; clrBk = m_colors[COL_TextSelBk]; } CRect rcSubItem(itemRC.X, itemRC.Y, itemRC.GetRight(), itemRC.GetBottom()); pDC->SetTextColor(clrText); pDC->FillSolidRect(rcSubItem, clrBk); const INT cMargin = 2; FullTrackRecordSP& rec = (*m_pCollection)[nItem]; pDC->SetBkMode(TRANSPARENT); INT curx = cMargin; CRect rcFirstLine(rcSubItem); rcFirstLine.bottom = rcFirstLine.top + 20; rcFirstLine.left = cMargin; rcFirstLine.right -= cMargin; CRect rcSecondLine(rcSubItem); rcSecondLine.top = rcFirstLine.bottom; rcSecondLine.left = cMargin; rcSecondLine.right -= cMargin; if (m_bDrawPictures) { INT imgHeight = 32;//rcSubItem.Height() - 2 * cMargin; INT cury = rcSubItem.top + cMargin; LocalPictureManager* pLM = PRGAPI()->GetLocalPictureManager(); Gdiplus::Rect rcImage(curx, cury, imgHeight, imgHeight); Graphics g2(hdc); BOOL bRet = pLM->DrawAlbumThumbnail(rec->artist.name.c_str(), rec->album.name.c_str(), g2, rcImage); if (!bRet) bRet = pLM->DrawArtistThumbnail(rec->artist.name.c_str(), g2, rcImage); if (!bRet) bRet = pLM->DrawDefaultThumbnail(IIT_AlbumPicture, g2, rcImage); curx += 32 + cMargin ; } rcSecondLine.left = curx; //=== Draw the icon INT cury = rcFirstLine.top + (rcFirstLine.Height() - 16) / 2; pDC->SetTextColor(clrText); DrawIconEx(pDC->m_hDC, curx, cury, pAPI->GetIconForTrackType(rec->track.trackType), 16, 16, 0, 0, DI_NORMAL); curx += 16 + cMargin; //=== Draw the title CRect rcTitle(rcFirstLine); rcTitle.left = curx; CFont* pOldFont = pDC->SelectObject(m_pBoldFont); pDC->DrawText(rec->track.name.c_str(), rec->track.name.size(), &rcTitle, DT_END_ELLIPSIS | DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX); pDC->DrawText(rec->track.name.c_str(), rec->track.name.size(), &rcTitle, DT_END_ELLIPSIS | DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX | DT_CALCRECT); //=== Draw the artist CRect rcArtist(rcFirstLine); rcArtist.left = rcTitle.right + cMargin; pDC->DrawText(rec->artist.name.c_str(), rec->artist.name.size(), &rcArtist, DT_END_ELLIPSIS | DT_RIGHT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX); pDC->SelectObject(m_pNormalFont); //=== Next line //=== Draw the rating (if exists) if (rec->track.rating > 0 && rec->track.rating < 256) { FLOAT fStars = Rating2Stars(rec->track.rating); if (fStars > 0.0f && fStars <=1.0f) { DrawIconEx(hdc, rcSecondLine.left, rcSecondLine.top, pAPI->GetIcon(ICO_StarBad16), 16, 16, 0, 0, DI_NORMAL); rcSecondLine.left += 17; } while (fStars > 1.0f) { DrawIconEx(hdc, rcSecondLine.left, rcSecondLine.top, pAPI->GetIcon(ICO_StarGold16), 16, 16, 0, 0, DI_NORMAL); fStars -= 1.0f; rcSecondLine.left += 17; } } TCHAR time[500]; UINT len = _sntprintf(time, 500, _T("%d:%02d | %s: %s | %s: %s"), INT (rec->track.duration / 60), INT(rec->track.duration) % 60, pAPI->GetString(IDS_ALBUM), rec->album.name.c_str(), pAPI->GetString(IDS_LOCATION), rec->track.location.c_str() ); pDC->DrawText(time, len, &rcSecondLine, DT_END_ELLIPSIS | DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOPREFIX); pDC->SelectObject(pOldFont); g.ReleaseHDC(pDC->m_hDC); }