vc列表框中的网格线颜色太淡了,该如何处理
vc列表框中的网格线颜色太淡了
CListCtrl用LVS_EX_GRIDLINES显示出的网格线颜色有点淡,不知道怎么重画,请大家帮帮忙。谢谢。
------解决思路----------------------
有那种别人写好的类,你可以看看,不过稳定性要测试下
------解决思路----------------------
同意楼上,你可以到www.codeproject.com上看看,有很多。。。。
------解决思路----------------------
重写CListCtrl类,添加处理虚函数DrawItem
------解决思路----------------------
MSDN的例子:
CListBox::DrawItem
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
Parameters
lpDrawItemStruct
A long pointer to a DRAWITEMSTRUCT structure that contains information about the type of drawing required.
Remarks
Called by the framework when a visual aspect of an owner-draw list box changes. The itemAction and itemState members of the DRAWITEMSTRUCT structure define the drawing action that is to be performed.
By default, this member function does nothing. Override this member function to implement drawing for an owner-draw CListBox object. The application should restore all graphics device interface (GDI) objects selected for the display context supplied in lpDrawItemStruct before this member function terminates.
See CWnd::OnDrawItem for a description of the DRAWITEMSTRUCT structure.
Example
------解决思路----------------------
CListBox::DrawItem
------解决思路----------------------
MSDN的例子:
CListCtrl用LVS_EX_GRIDLINES显示出的网格线颜色有点淡,不知道怎么重画,请大家帮帮忙。谢谢。
------解决思路----------------------
有那种别人写好的类,你可以看看,不过稳定性要测试下
------解决思路----------------------
同意楼上,你可以到www.codeproject.com上看看,有很多。。。。
------解决思路----------------------
重写CListCtrl类,添加处理虚函数DrawItem
------解决思路----------------------
MSDN的例子:
CListBox::DrawItem
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
Parameters
lpDrawItemStruct
A long pointer to a DRAWITEMSTRUCT structure that contains information about the type of drawing required.
Remarks
Called by the framework when a visual aspect of an owner-draw list box changes. The itemAction and itemState members of the DRAWITEMSTRUCT structure define the drawing action that is to be performed.
By default, this member function does nothing. Override this member function to implement drawing for an owner-draw CListBox object. The application should restore all graphics device interface (GDI) objects selected for the display context supplied in lpDrawItemStruct before this member function terminates.
See CWnd::OnDrawItem for a description of the DRAWITEMSTRUCT structure.
Example
// CMyListBox is my owner-drawn list box derived from CListBox. This
// example draws an item's text centered vertically and horizontally. The
// list box control was created with the following code:
// pmyListBox->Create(
// WS_CHILD
------解决思路----------------------
WS_VISIBLE
------解决思路----------------------
WS_BORDER
------解决思路----------------------
WS_HSCROLL
------解决思路----------------------
WS_VSCROLL
------解决思路----------------------
// LBS_SORT
------解决思路----------------------
LBS_MULTIPLESEL
------解决思路----------------------
LBS_OWNERDRAWVARIABLE,
// myRect, pParentWnd, 1);
//
void CMyListBox::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
ASSERT(lpDrawItemStruct->CtlType == ODT_LISTBOX);
LPCTSTR lpszText = (LPCTSTR) lpDrawItemStruct->itemData;
ASSERT(lpszText != NULL);
CDC dc;
dc.Attach(lpDrawItemStruct->hDC);
// Save these value to restore them when done drawing.
COLORREF crOldTextColor = dc.GetTextColor();
COLORREF crOldBkColor = dc.GetBkColor();
// If this item is selected, set the background color
// and the text color to appropriate values. Also, erase
// rect by filling it with the background color.
if ((lpDrawItemStruct->itemAction
------解决思路----------------------
ODA_SELECT) &&
(lpDrawItemStruct->itemState & ODS_SELECTED))
{
dc.SetTextColor(::GetSysColor(COLOR_HIGHLIGHTTEXT));
dc.SetBkColor(::GetSysColor(COLOR_HIGHLIGHT));
dc.FillSolidRect(&lpDrawItemStruct->rcItem,
::GetSysColor(COLOR_HIGHLIGHT));
}
else
dc.FillSolidRect(&lpDrawItemStruct->rcItem, crOldBkColor);
// If this item has the focus, draw a red frame around the
// item's rect.
if ((lpDrawItemStruct->itemAction
------解决思路----------------------
ODA_FOCUS) &&
(lpDrawItemStruct->itemState & ODS_FOCUS))
{
CBrush br(RGB(255, 0, 0));
dc.FrameRect(&lpDrawItemStruct->rcItem, &br);
}
// Draw the text.
dc.DrawText(
lpszText,
strlen(lpszText),
&lpDrawItemStruct->rcItem,
DT_CENTER
------解决思路----------------------
DT_SINGLELINE
------解决思路----------------------
DT_VCENTER);
// Reset the background color and the text color back to their
// original values.
dc.SetTextColor(crOldTextColor);
dc.SetBkColor(crOldBkColor);
dc.Detach();
}
------解决思路----------------------
CListBox::DrawItem
------解决思路----------------------
MSDN的例子: