× 评论会员:尤金Podsypalnikov 时间:2012/01/25
尝试和扩展它{S1}
void CColoredListReport::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
switch (lpDrawItemStruct->itemAction) {
case ODA_DRAWENTIRE:
CRect cRect(lpDrawItemStruct->rcItem);
cRect.DeflateRect(0 , 0 , 1 , 1 );
pDC->FillSolidRect(cRect, RGB(255 , 249 , 121 ));
pDC->MoveTo(cRect.left, cRect.bottom);
pDC->LineTo(cRect.right, cRect.bottom);
pDC->LineTo(cRect.right, cRect.top -1);
CRect cSubItemRect;
GetSubItemRect(lpDrawItemStruct->itemID, 0 , LVIR_LABEL, cSubItemRect);
pDC->DrawText(GetItemText(0 , 0 ), cSubItemRect, DT_CENTER|DT_VCENTER);
GetSubItemRect(lpDrawItemStruct->itemID, 1 , LVIR_LABEL, cSubItemRect);
pDC->MoveTo(cSubItemRect.TopLeft());
pDC->LineTo(cSubItemRect.left, cSubItemRect.bottom);
pDC->DrawText(GetItemText(0 , 1 ), cSubItemRect, DT_CENTER|DT_VCENTER);
break ;
}
}
× 评论会员:尤金Podsypalnikov 时间:2012/01/25
你应该使用PDC -> FillSolidRect(CRECT,LT; YourRGBgt;)
在您的DrawItem(){S1}
请不要将它注释掉{S1}
× 评论会员:尤金Podsypalnikov 时间:2012/01/25
请再次采取cRect.DflateRect(0,0,1,1); {S1}
× 评论会员:尤金Podsypalnikov 时间:2012/01/25
你可以提供一个函数{S1}:{ BR}
COLORREF CColoredListReport::GetColorByIndex(int iRow)
{
COLORREF crResult = iRow % 2 ? RGB(x, y, z) : RGB(z, x, y);
return crResult;
}
...和使用中的DrawItem():
...
pDC->FillSolidRect(cRect,
GetColorByIndex(lpDrawItemStruct->itemID));
...
× 评论会员:尤金Podsypalnikov 时间:2012/01/25
号错误的来源是放置在您的DrawItem(){S1}
× 评论会员:AJ83 时间:2012/01/25
你想要我来评论PDC"Erasebkground ()".?{ BR}
但我想这样的背景下,
任何其他建议
× 评论会员:?AJ83 时间:2012/01/25
在的DrawItem(),PDC -> FillSolidRect(),已经评论
我没有得到你想传达的正是
× 评论会员:。尤金Podsypalnikov 时间:2012/01/25
是。但它可能无法评论,
您应填写行的背景与方法... ... {S1}
× 评论会员:尤金Podsypalnikov 时间:2012/01/25
你可以尝试删除蟀风格
和帧所有者与黑线绘制细胞:
每个单元 - 在其底部和右侧(CYourList:的DrawItem (..))... {S1}
× 评论会员:AJ83 时间:2012/01/25
你有任何对于本示例代码,使我可以继续
我已经开始这方面的工作
× 评论会员:。尤金Podsypalnikov 时间:2012/01/25
你可能开始{S1}:
{C7 -}
× 评论会员:AJ83 时间:2012/01/25
尤金,
我的要求是:交替行的Multiline属性,真正的黄色
和网格线必须是黑色
× 评论会员:。AJ83 时间:2012/01/25
控制不来"的DrawItem ()".{ BR}我的所有者数据所有者绘制固定为真
× 评论会员:。尤金Podsypalnikov 时间:2012/01/25
现在是黄色{S1}
void CYourList::DrawItem(LPDRAWITEMSTRUCT pDIS) {
CDC* pcDC = CDC::FromHandle(pDIS->hDC);
switch (pDIS->itemAction) {
case ODA_DRAWENTIRE: {
CRect cItemRect(pDIS->rcItem);
pcDC->FillSolidRect(cItemRect, RGB(255 , 249 , 121 ));
pcDC->MoveTo(cItemRect.left, cItemRect.bottom);
pcDC->LineTo(cItemRect.right, cItemRect.bottom);
pcDC->LineTo(cItemRect.right, cItemRect.top);
...
}
break ;
}
}
× 评论会员:尤金Podsypalnikov 时间:2012/01/25
请发表您的列表类,
它的实施和家长交流{S1}
× 评论会员:AJ83 时间:2012/01/25
List类:
头文件:
class CColoredListReport : public CListCtrl
{
DECLARE_DYNAMIC(CColoredListReport)
public :
CColoredListReport();
virtual CColoredListReport();
protected :
DECLARE_MESSAGE_MAP()
public :
virtual void DrawItem(LPDRAWITEMSTRUCT );
};
CPP文件:
void CColoredListReport::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC* pDC;
pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
switch (lpDrawItemStruct->itemAction)
{
case ODA_DRAWENTIRE:
CRect cRect(lpDrawItemStruct->rcItem);
pDC->MoveTo(cRect.left, cRect.bottom);
pDC->LineTo(cRect.right, cRect.bottom);
pDC->LineTo(cRect.right, cRect.top);
break ;
}
}
父类:
void CListForm::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_lstReportView);
}
× 评论会员:尤金Podsypalnikov 时间:2012/01/25
有什么画,
你要插入一些列和项目... ... {S1}
例如,在虚拟的空白CMainForm::OnInitialUpdate():
void CMainForm::OnInitialUpdate()
{
UpdateData(FALSE);
m_cList.InsertColumn(0 , _T(" Column 1" ));
m_cList.InsertItem(0 , _T(" item 1" ));
m_cList.InsertItem(1 , _T(" item 2" ));
m_cList.InsertItem(2 , _T(" item 3" ));
m_cList.InsertItem(3 , _T(" item 4" ));
}
× 评论会员:AJ83 时间:2012/01/25
所有的控制首先是不会"的DrawItem ()".{ BR}
第二,我从CListForm访问m_lstReportView
以上这一切,我创造我自己的名单Ctrl键,其中包括黑色与彩色交替行的网格线。首先,我来实现这个以后我会做插入
× 评论会员:。尤金Podsypalnikov 时间:2012/01/25
非常好{S1}
但conrol会去那里
- 当它是必要的,例如绘制的项目
。
有没有项目在您的列表控件现在... ... {S1}
× 评论会员:AJ83 时间:2012/01/25
ohh。 K I得到你的观点。
是的,控制现在去那里。但它是只绘制水平线,但不垂直之一。
也没有显示插入项目