本文整理汇总了C++中CDCHandle::DrawFocusRect方法的典型用法代码示例。如果您正苦于以下问题:C++ CDCHandle::DrawFocusRect方法的具体用法?C++ CDCHandle::DrawFocusRect怎么用?C++ CDCHandle::DrawFocusRect使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CDCHandle
的用法示例。
在下文中一共展示了CDCHandle::DrawFocusRect方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
rc.left += cx;
}
if( pItem->mask & TLVIF_TEXT ) {
rc.left += 2;
COLORREF clrText = lptvcd->clrText;
if( pItem->mask & TLVIF_TEXTCOLOR ) clrText = pItem->clrText;
if( iState & CDIS_SELECTED ) clrText = ::GetSysColor(COLOR_HIGHLIGHTTEXT);
dc.SetTextColor(clrText);
CFont font;
HFONT hOldFont = NULL;
if( pItem->mask & TLVIF_STATE ) {
LOGFONT lf;
::GetObject(m_ctrlTree.GetFont(), sizeof(LOGFONT), &lf);
if( pItem->state & TLVIS_BOLD ) lf.lfWeight += FW_BOLD - FW_NORMAL;
if( pItem->state & TLVIS_ITALIC ) lf.lfItalic = TRUE;
if( pItem->state & TLVIS_UNDERLINE ) lf.lfUnderline = TRUE;
if( pItem->state & TLVIS_STRIKEOUT ) lf.lfStrikeOut = TRUE;
font.CreateFontIndirect(&lf);
ATLASSERT(!font.IsNull());
hOldFont = dc.SelectFont(font);
}
UINT format = pItem->mask & TLVIF_FORMAT ? pItem->format : 0;
if (0 == i)
{
CNBDevice* pDevice = (CNBDevice*) m_ctrlTree.GetItemData(hItem);
if (NULL != pDevice && pDevice->GetIDString(_T('*')).GetLength() > 0)
{
CString strBottom = pDevice->GetIDString(m_chHidden);
CRect rcTop = rc; rcTop.DeflateRect(0, 0, 0, rcTop.Height() / 2);
CRect rcBottom = rc; rcBottom.top = rcTop.bottom;
dc.FillSolidRect(&rc, lptvcd->clrTextBk);
LOGFONT lf;
CFontHandle fontHandle = dc.GetCurrentFont();
fontHandle.GetLogFont(&lf);
lf.lfWeight = FW_BOLD;
CFont font;
font.CreateFontIndirect(&lf);
ATLASSERT(!font.IsNull());
HFONT hOldFont = dc.SelectFont(font);
dc.DrawText(pItem->pszText, -1, &rcTop, DT_VCENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS | format);
dc.SelectFont(hOldFont);
COLORREF clrText = dc.GetTextColor();
clrText = RGB(
(GetRValue(clrText) + 0x40) & 0xFF,
(GetGValue(clrText) + 0x40) & 0xFF,
(GetBValue(clrText) + 0x40) & 0xFF);
clrText = dc.SetTextColor(clrText);
dc.DrawText(strBottom, -1, &rcBottom, DT_VCENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS | format);
dc.SetTextColor(clrText);
}
else
{
dc.FillSolidRect(&rc, lptvcd->clrTextBk);
LOGFONT lf;
CFontHandle fontHandle = dc.GetCurrentFont();
fontHandle.GetLogFont(&lf);
lf.lfWeight = FW_BOLD;
CFont font;
font.CreateFontIndirect(&lf);
ATLASSERT(!font.IsNull());
HFONT hOldFont = dc.SelectFont(font);
dc.DrawText(pItem->pszText,
-1,
&rc,
DT_VCENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS | format);
dc.SelectFont(hOldFont);
}
}
else
{
dc.DrawText(pItem->pszText,
-1,
&rc,
DT_VCENTER | DT_SINGLELINE | DT_WORD_ELLIPSIS | format);
}
if( pItem->mask & TLVIF_STATE ) dc.SelectFont(hOldFont);
}
}
// FIX-BY-PATRIA: DrawFocusRect should be done here
if( (iState & CDIS_FOCUS) != 0 && !il.IsNull() ) {
RECT rcFocus = rcItem;
rcFocus.left = 1;
dc.SetTextColor(::GetSysColor(COLOR_BTNTEXT));
dc.DrawFocusRect(&rcFocus);
}
}
示例2: DrawItem
//.........这里部分代码省略.........
pDC.Draw3dRect(itemRect, ::GetSysColor(COLOR_BTNHILIGHT), ::GetSysColor(COLOR_BTNSHADOW));
}
}
else
{
// Draw top-left borders
// White line
pOldPen = pDC.SelectPen(penBtnHiLight);
pDC.MoveTo(itemRect.left, itemRect.bottom-1);
pDC.LineTo(itemRect.left, itemRect.top);
pDC.LineTo(itemRect.right, itemRect.top);
// Light gray line
pDC.SelectPen(pen3DLight);
pDC.MoveTo(itemRect.left+1, itemRect.bottom-1);
pDC.LineTo(itemRect.left+1, itemRect.top+1);
pDC.LineTo(itemRect.right, itemRect.top+1);
// Draw bottom-right borders
// Black line
pDC.SelectPen(pen3DDKShadow);
pDC.MoveTo(itemRect.left, itemRect.bottom-1);
pDC.LineTo(itemRect.right-1, itemRect.bottom-1);
pDC.LineTo(itemRect.right-1, itemRect.top-1);
// Dark gray line
pDC.SelectPen(penBtnShadow);
pDC.MoveTo(itemRect.left+1, itemRect.bottom-2);
pDC.LineTo(itemRect.right-2, itemRect.bottom-2);
pDC.LineTo(itemRect.right-2, itemRect.top);
//
pDC.SelectPen(pOldPen);
}
}
// Read the button's title
CString sTitle;
int nLen = GetWindowTextLength();
int nRetLen = GetWindowText(sTitle.GetBufferSetLength(nLen), nLen + 1);
CRect captionRect = lpDIS->rcItem;
// Draw the icon
if (m_csIcons[0].hIcon != 0)
{
DrawTheIcon(pDC, !sTitle.IsEmpty(), lpDIS->rcItem, captionRect, m_bIsPressed, m_bIsDisabled);
}
if (m_csBitmaps[0].hBitmap != 0)
{
pDC.SetBkColor(RGB(255,255,255));
DrawTheBitmap(pDC, !sTitle.IsEmpty(), lpDIS->rcItem, captionRect, m_bIsPressed, m_bIsDisabled);
}
// Write the button title (if any)
if (!sTitle.IsEmpty())
{
// Draw the button's title
// If button is pressed then "press" title also
if (m_bIsPressed && !m_bIsCheckBox)
{
captionRect.OffsetRect(1, 1);
}
// Center text
CRect centerRect = captionRect;
pDC.DrawText(sTitle, -1, captionRect, DT_WORDBREAK | DT_CENTER | DT_CALCRECT);
captionRect.OffsetRect((centerRect.Width() - captionRect.Width())/2, (centerRect.Height() - captionRect.Height())/2);
pDC.SetBkMode(TRANSPARENT);
if (m_bIsDisabled)
{
captionRect.OffsetRect(1, 1);
pDC.SetTextColor(::GetSysColor(COLOR_3DHILIGHT));
pDC.DrawText(sTitle, -1, captionRect, DT_WORDBREAK | DT_CENTER);
captionRect.OffsetRect(-1, -1);
pDC.SetTextColor(::GetSysColor(COLOR_3DSHADOW));
pDC.DrawText(sTitle, -1, captionRect, DT_WORDBREAK | DT_CENTER);
}
else
{
if (m_bMouseOnButton || m_bIsPressed)
{
pDC.SetTextColor(m_crColors[BTNST_COLOR_FG_IN]);
pDC.SetBkColor(m_crColors[BTNST_COLOR_BK_IN]);
}
else
{
pDC.SetTextColor(m_crColors[BTNST_COLOR_FG_OUT]);
pDC.SetBkColor(m_crColors[BTNST_COLOR_BK_OUT]);
}
pDC.DrawText(sTitle, -1, captionRect, DT_WORDBREAK | DT_CENTER);
}
}
if (!m_bIsFlat || (m_bIsFlat && m_bDrawFlatFocus))
{
// Draw the focus rect
if (m_bIsFocused)
{
CRect focusRect = itemRect;
focusRect.DeflateRect(3, 3);
pDC.DrawFocusRect(&focusRect);
}
}
}
示例3: DrawDay
BOOL CDxDatePickerDay::DrawDay(CDCHandle dc)
{
// check this day item
BOOL bThisMonthItem = FALSE;
BOOL bNextMonthItem = FALSE;
BOOL bPreviousMonthItem = FALSE;
CDxMonthPicker* pControl = GetDatePicker();
CDxDatePickerMonth* pMonth = GetMonth();
COleDateTime dtDay = GetDate();
CRect rcDay = GetRect();
if (dtDay.GetYear() > pMonth->GetMonth().GetYear())
{
bNextMonthItem = TRUE;
}
else if (dtDay.GetYear() < pMonth->GetMonth().GetYear())
{
bPreviousMonthItem = TRUE;
}
else
{
// years the same
if (dtDay.GetMonth() > pMonth->GetMonth().GetMonth())
bNextMonthItem = TRUE;
else if (dtDay.GetMonth() < pMonth->GetMonth().GetMonth())
bPreviousMonthItem = TRUE;
else // months the same
bThisMonthItem = TRUE;
}
if (bPreviousMonthItem && !pMonth->GetShowDaysBefore())
return FALSE;
if (bNextMonthItem && !pMonth->GetShowDaysAfter())
return FALSE;
// apply settings to the DC
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(GetSysColor(COLOR_WINDOWTEXT));
dc.FillSolidRect(rcDay, GetSysColor(COLOR_WINDOW));
// change default drawing metrics if day is selected
if (pControl->IsSelected(dtDay))
{
dc.SetTextColor(GetSysColor(COLOR_WINDOW));
dc.FillSolidRect(rcDay, GetSysColor(COLOR_WINDOWTEXT));
}
// make a text for drawing
CString strText;
strText.Format(_T("%i"), dtDay.GetDay());
// draw item content
{
// draw item text
HFONT hFontOld = (HFONT)dc.SelectFont(CDxFontManager::GetSingleton().GetFont(DUIF_DEFAULTFONT));
dc.DrawText(strText, strText.GetLength(), &rcDay, DT_SINGLELINE | DT_VCENTER | DT_CENTER | DT_NOCLIP);
}
CRect rcFocus = rcDay;
BOOL bToday = FALSE;
// highlight today item
if (IsToday(dtDay))
{
dc.Draw3dRect(rcDay, GetSysColor(COLOR_HIGHLIGHT), GetSysColor(COLOR_HIGHLIGHT));
bToday = TRUE;
}
if (pControl->IsSelected(dtDay))
{
if (!bToday)
{
dc.SetTextColor(0);
dc.SetBkColor(RGB(255, 255, 255));
dc.DrawFocusRect(&rcFocus);
}
else
{
COLORREF clrFocus = GetSysColor(COLOR_HIGHLIGHT);
clrFocus = clrFocus ^ RGB(255, 128, 128);
rcFocus.DeflateRect(0, 0, 1, 1);
CPen pen1;
pen1.CreatePen(PS_DOT, 1, clrFocus);
HPEN hOldPen = dc.SelectPen(pen1);
dc.MoveTo(rcFocus.TopLeft());
dc.LineTo(rcFocus.right, rcFocus.top);
dc.LineTo(rcFocus.right, rcFocus.bottom);
dc.LineTo(rcFocus.left, rcFocus.bottom);
dc.LineTo(rcFocus.left, rcFocus.top);
dc.SelectPen(hOldPen);
}
//.........这里部分代码省略.........