本文整理汇总了C++中COptionTreeItem::DrawItem方法的典型用法代码示例。如果您正苦于以下问题:C++ COptionTreeItem::DrawItem方法的具体用法?C++ COptionTreeItem::DrawItem怎么用?C++ COptionTreeItem::DrawItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类COptionTreeItem
的用法示例。
在下文中一共展示了COptionTreeItem::DrawItem方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnPaint
void COptionTreeList::OnPaint()
{
// Make sure valid
if (m_otOption == NULL)
{
return;
}
// Declare variables
CPaintDC dc(this);
CDC* pDCMem = new CDC;
CBitmap bpMem;
CBitmap *bmOld;
COptionTreeItem* otiItem;
CRect rcClient;
HGDIOBJ hOldBrush;
long lTotal, lHeight;
HRGN hRgn;
// Get client rectangle
GetClientRect(rcClient);
// Clear visible list
m_otOption->ClearVisibleList();
// Clear all label rectangle
m_otOption->ClearAllLabelRect();
// Create DC
pDCMem->CreateCompatibleDC(&dc);
// Create bitmap
bpMem.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());
// Select bitmap
bmOld = pDCMem->SelectObject(&bpMem);
// Draw control background
hOldBrush = pDCMem->SelectObject(GetSysColorBrush(COLOR_BTNFACE));
pDCMem->PatBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), PATCOPY);
// Draw control inside fill color
rcClient.DeflateRect(2, 2);
if (m_otOption->IsWindowEnabled() == TRUE)
{
pDCMem->SelectObject(GetSysColorBrush(COLOR_WINDOW));
}
else
{
pDCMem->SelectObject(GetSysColorBrush(COLOR_3DFACE));
}
pDCMem->PatBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), PATCOPY);
rcClient.InflateRect(2, 2);
// Draw expand column
if (m_otOption->GetShadeExpandColumn() == TRUE || m_otOption->IsWindowEnabled() == FALSE)
{
pDCMem->SelectObject(GetSysColorBrush(COLOR_BTNFACE));
}
else
{
pDCMem->SelectObject(GetSysColorBrush(COLOR_WINDOW));
}
pDCMem->PatBlt(0, 0, OT_EXPANDCOLUMN, rcClient.Height(), PATCOPY);
// Create clip region
hRgn = CreateRectRgn(rcClient.left, rcClient.top, rcClient.right, rcClient.bottom);
SelectClipRgn(pDCMem->m_hDC, hRgn);
// Draw all items
lTotal = 0;
for (otiItem = m_otOption->GetRootItem()->GetChild(); otiItem != NULL; otiItem = otiItem->GetSibling())
{
lHeight = otiItem->DrawItem(pDCMem, rcClient, 0, lTotal);
lTotal += lHeight;
}
// Remove clip region
SelectClipRgn(pDCMem->GetSafeHdc(), NULL);
DeleteObject(hRgn);
// Draw vertical sep
_DrawDarkVLine(pDCMem->GetSafeHdc(), OT_EXPANDCOLUMN, 0, rcClient.bottom);
// Draw edge
pDCMem->DrawEdge(&rcClient, BDR_SUNKENOUTER, BF_RECT);
// Draw draw column
if (m_bColDrag == TRUE)
{
_DrawXorBar(pDCMem->GetSafeHdc(), m_lColumn - OT_COLRNG / 2, 0, 4, rcClient.bottom);
}
// Copy back buffer to the display
dc.BitBlt(0, 0, rcClient.Width(), rcClient.Height(), pDCMem, 0, 0, SRCCOPY);
// Select old objects
pDCMem->SelectObject(hOldBrush);
pDCMem->SelectObject(bmOld);
//.........这里部分代码省略.........