本文整理汇总了C++中CGridListCtrlEx::OnDisplayCellColor方法的典型用法代码示例。如果您正苦于以下问题:C++ CGridListCtrlEx::OnDisplayCellColor方法的具体用法?C++ CGridListCtrlEx::OnDisplayCellColor怎么用?C++ CGridListCtrlEx::OnDisplayCellColor使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGridListCtrlEx
的用法示例。
在下文中一共展示了CGridListCtrlEx::OnDisplayCellColor方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnCustomDraw
//------------------------------------------------------------------------
//! Overrides the custom draw handler, to allow custom coloring of cells
//! with this column trait.
//!
//! @param owner The list control drawing
//! @param pLVCD Pointer to NMLVCUSTOMDRAW structure
//! @param pResult Modification to the drawing stage (CDRF_NEWFONT, etc.)
//------------------------------------------------------------------------
void CGridColumnTraitText::OnCustomDraw(CGridListCtrlEx& owner, NMLVCUSTOMDRAW* pLVCD, LRESULT* pResult)
{
switch (pLVCD->nmcd.dwDrawStage)
{
// Before painting a cell
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
{
m_OldTextColor = pLVCD->clrText;
m_OldBackColor = pLVCD->clrTextBk;
// Only change cell colors when not selected
if (UpdateTextColor(pLVCD, pLVCD->clrText))
*pResult |= CDRF_NEWFONT | CDRF_NOTIFYPOSTPAINT;
if (UpdateBackColor(pLVCD, pLVCD->clrTextBk))
*pResult |= CDRF_NEWFONT | CDRF_NOTIFYPOSTPAINT;
if (owner.OnDisplayCellColor(pLVCD))
*pResult |= CDRF_NEWFONT | CDRF_NOTIFYPOSTPAINT;
// Changed the colors without asking for restoring the original color
ASSERT((*pResult & CDRF_NOTIFYPOSTPAINT) || (pLVCD->clrText == m_OldTextColor && pLVCD->clrTextBk == m_OldBackColor));
LOGFONT newFont = { 0 };
bool createFont = owner.OnDisplayCellFont(pLVCD, newFont);
createFont |= UpdateTextFont(pLVCD, newFont);
if (createFont)
{
CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
CFont* pNewFont = new CFont;
VERIFY(pNewFont->CreateFontIndirect(&newFont));
m_pOldFont = pDC->SelectObject(pNewFont);
*pResult |= CDRF_NOTIFYPOSTPAINT; // We need to restore the original font
*pResult |= CDRF_NEWFONT;
}
} break;
// After painting a cell
case CDDS_ITEMPOSTPAINT | CDDS_SUBITEM:
{
if (m_pOldFont != NULL)
{
// Restore the original font
CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
CFont* pNewFont = pDC->SelectObject(m_pOldFont);
delete pNewFont;
m_pOldFont = NULL;
}
pLVCD->clrText = m_OldTextColor;
pLVCD->clrTextBk = m_OldBackColor;
*pResult |= CDRF_NEWFONT;
} break;
}
}
示例2: OnCustomDraw
void CGridColumnTraitText::OnCustomDraw(CGridListCtrlEx& owner, NMLVCUSTOMDRAW* pLVCD, LRESULT* pResult)
{
int nRow = (int)pLVCD->nmcd.dwItemSpec;
switch (pLVCD->nmcd.dwDrawStage)
{
// Before painting a cell
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
{
// Remove the selection color for the focus cell, to make it easier to see focus
int nCol = pLVCD->iSubItem;
if (pLVCD->nmcd.uItemState & CDIS_SELECTED && owner.GetFocusCell()==nCol && owner.GetFocusRow()==nRow)
{
pLVCD->nmcd.uItemState &= ~CDIS_SELECTED;
}
if (!owner.IsRowSelected(nRow) && owner.GetHotItem()!=nRow)
{
if (UpdateTextColor(pLVCD->clrText))
*pResult |= CDRF_NEWFONT;
if (UpdateBackColor(pLVCD->clrTextBk))
*pResult |= CDRF_NEWFONT;
// Only change cell colors when not selected / in focus
if (owner.OnDisplayCellColor(nRow, nCol, pLVCD->clrText, pLVCD->clrTextBk))
*pResult |= CDRF_NEWFONT;
}
LOGFONT newFont = {0};
if (owner.OnDisplayCellFont(nRow, nCol, newFont))
{
CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
CFont* pNewFont = new CFont;
VERIFY( pNewFont->CreateFontIndirect(&newFont) );
m_pOldFont = pDC->SelectObject(pNewFont);
*pResult |= CDRF_NOTIFYPOSTPAINT; // We need to restore the original font
*pResult |= CDRF_NEWFONT;
}
} break;
// After painting a cell
case CDDS_ITEMPOSTPAINT | CDDS_SUBITEM:
{
if (m_pOldFont!=NULL)
{
// Restore the original font
CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
CFont* pNewFont = pDC->SelectObject(m_pOldFont);
delete pNewFont;
}
} break;
}
}
示例3: OnCustomDraw
//------------------------------------------------------------------------
//! Overrides the custom draw handler, to allow custom coloring of cells
//! with this column trait.
//!
//! @param owner The list control drawing
//! @param pLVCD Pointer to NMLVCUSTOMDRAW structure
//! @param pResult Modification to the drawing stage (CDRF_NEWFONT, etc.)
//------------------------------------------------------------------------
void CGridColumnTraitText::OnCustomDraw(CGridListCtrlEx& owner, NMLVCUSTOMDRAW* pLVCD, LRESULT* pResult)
{
int nRow = (int)pLVCD->nmcd.dwItemSpec;
switch (pLVCD->nmcd.dwDrawStage)
{
// Before painting a cell
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
{
int nCol = pLVCD->iSubItem;
m_OldTextColor = pLVCD->clrText;
m_OldBackColor = pLVCD->clrTextBk;
// Only change cell colors when not selected
if (UpdateTextColor(pLVCD->clrText))
*pResult |= CDRF_NEWFONT | CDRF_NOTIFYPOSTPAINT;
if (UpdateBackColor(pLVCD->clrTextBk))
*pResult |= CDRF_NEWFONT | CDRF_NOTIFYPOSTPAINT;
if (owner.OnDisplayCellColor(nRow, nCol, pLVCD->clrText, pLVCD->clrTextBk))
*pResult |= CDRF_NEWFONT | CDRF_NOTIFYPOSTPAINT;
LOGFONT newFont = {0};
if (owner.OnDisplayCellFont(nRow, nCol, newFont))
{
CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
CFont* pNewFont = new CFont;
VERIFY( pNewFont->CreateFontIndirect(&newFont) );
m_pOldFont = pDC->SelectObject(pNewFont);
*pResult |= CDRF_NOTIFYPOSTPAINT; // We need to restore the original font
*pResult |= CDRF_NEWFONT;
}
} break;
// After painting a cell
case CDDS_ITEMPOSTPAINT | CDDS_SUBITEM:
{
if (m_pOldFont!=NULL)
{
// Restore the original font
CDC* pDC = CDC::FromHandle(pLVCD->nmcd.hdc);
CFont* pNewFont = pDC->SelectObject(m_pOldFont);
delete pNewFont;
}
pLVCD->clrText = m_OldTextColor;
pLVCD->clrTextBk = m_OldBackColor;
*pResult |= CDRF_NEWFONT;
} break;
}
}