Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
Beginner_MFC
class IEHeaderCtrl : public CHeaderCtrl { // Construction public: IEHeaderCtrl(); // Generated message map functions protected: afx_msg virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
DECLARE_MESSAGE_MAP()
}
Code for IEHeaderCtrl.cpp
BEGIN_MESSAGE_MAP(IEHeaderCtrl, CHeaderCtrl)
END_MESSAGE_MAP
void IEHeaderCtrl::
DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) { HDITEM hdi; CBrush brush(RGB(255, 0, 0)); CString csBuffer; CRect rectFrame(lpDrawItemStruct->rcItem); ZeroMemory(&hdi, sizeof(HDITEM)); hdi.mask = HDI_TEXT; LPTSTR pBuf = csBuffer.GetBufferSetLength(MAX_PATH); hdi.mask = HDI_TEXT; hdi.pszText = pBuf; hdi.cchTextMax = MAX_PATH; GetItem(lpDrawItemStruct->itemID, &hdi); csBuffer.ReleaseBuffer(); CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC); pDC->FillRect(rectFrame, &brush); pDC->SetTextColor(RGB(255, 255, 255)); pDC->SetBkMode(TRANSPARENT); pDC->DrawText(csBuffer, &lpDrawItemStruct->rcItem, DT_LEFT | DT_SINGLELINE | DT_VCENTER); brush.Detach();
}
/*code for Myformview.cpp where my listctrl is embedded:*/
void MyFormView :: OnInitiUpdate()
{
IEHeaderCtrl m_HeaderCtrl;
CHeaderCtrl* pHeader = NULL; pHeader=m_List.GetHeaderCtrl(); VERIFY(m_HeaderCtrl.SubclassWindow(pHeader->m_hWnd)); HDITEM hdItem; hdItem.mask = HDI_FORMAT;
}
Can you read what you have posted?
I can't. :eek::sick:
Please, post good readable, formatted code snippet. Use Code tags.
Re: Coloring header row of CListCtrl C++
Code:
class IEHeaderCtrl : public CHeaderCtrl
{
public:
IEHeaderCtrl();
protected:
afx_msg virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
DECLARE_MESSAGE_MAP()
}
Code for IEHeaderCtrl.cpp
Code:
BEGIN_MESSAGE_MAP(IEHeaderCtrl, CHeaderCtrl)
END_MESSAGE_MAP
void IEHeaderCtrl::DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
HDITEM hdi;
CBrush brush(RGB(255, 0, 0));
CString csBuffer;
CRect rectFrame(lpDrawItemStruct->rcItem);
ZeroMemory(&hdi, sizeof(HDITEM));
hdi.mask = HDI_TEXT;
LPTSTR pBuf= csBuffer.GetBufferSetLength(MAX_PATH);
hdi.mask = HDI_TEXT;
hdi.pszText = pBuf;
hdi.cchTextMax = MAX_PATH;
GetItem(lpDrawItemStruct->itemID, &hdi);
csBuffer.ReleaseBuffer();
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->FillRect(rectFrame, &brush);
pDC->SetTextColor(RGB(255, 255, 255));
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(csBuffer, &lpDrawItemStruct->rcItem, DT_LEFT | DT_SINGLELINE | DT_VCENTER);
brush.Detach();
}
code for Myformview.cpp where my listctrl is embedded:
Code:
void MyFormView :: OnInitiUpdate()
{
IEHeaderCtrl m_HeaderCtrl;
CHeaderCtrl* pHeader = NULL;
pHeader=m_List.GetHeaderCtrl();
VERIFY(m_HeaderCtrl.SubclassWindow(pHeader->m_hWnd));
HDITEM hdItem;
hdItem.mask = HDI_FORMAT;
}
Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
Beginner_MFC
Code:
class IEHeaderCtrl : public CHeaderCtrl
{
public: IEHeaderCtrl();
protected: afx_msg virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
DECLARE_MESSAGE_MAP()
}
Code for IEHeaderCtrl.cpp
Code:
BEGIN_MESSAGE_MAP(IEHeaderCtrl, CHeaderCtrl)
END_MESSAGE_MAP
void IEHeaderCtrl::
DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
HDITEM hdi;
CBrush brush(RGB(255, 0, 0));
CString csBuffer;
CRect rectFrame(lpDrawItemStruct->rcItem); ZeroMemory(&hdi, sizeof(HDITEM));
hdi.mask = HDI_TEXT;
LPTSTR pBuf= csBuffer.GetBufferSetLength(MAX_PATH);
hdi.mask = HDI_TEXT;
hdi.pszText = pBuf;
hdi.cchTextMax = MAX_PATH; GetItem(lpDrawItemStruct->itemID, &hdi); csBuffer.ReleaseBuffer();
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->FillRect(rectFrame, &brush);
pDC->SetTextColor(RGB(255, 255, 255));
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(csBuffer, &lpDrawItemStruct->rcItem, DT_LEFT | DT_SINGLELINE | DT_VCENTER); brush.Detach();
}
Please, post your real code that compiles! not just a pseudo code.
And use the proper code indentations!
Re: Coloring header row of CListCtrl C++
This is a real code and compiling at my end..
Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
Beginner_MFC
This is a real code and compiling at my end..
Then where and how is this method
Code:
void IEHeaderCtrl::
DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
declared?
Re: Coloring header row of CListCtrl C++
See this, although already posted above..
Code:
class IEHeaderCtrl : public CHeaderCtrl
{
public:
IEHeaderCtrl();
protected:
afx_msg virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
DECLARE_MESSAGE_MAP()
}
Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
Beginner_MFC
See this, although already posted above..
Code:
class IEHeaderCtrl : public CHeaderCtrl
{
public: IEHeaderCtrl();
protected:
afx_msg virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
DECLARE_MESSAGE_MAP()
}
Well, there is
Code:
...
afx_msg virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
...
, not the
Code:
DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
Re: Coloring header row of CListCtrl C++
Not getting what else you want.see the code below(already posted) which is having definition of DrawItem
Code:
BEGIN_MESSAGE_MAP(IEHeaderCtrl, CHeaderCtrl)
END_MESSAGE_MAP
void IEHeaderCtrl::DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
HDITEM hdi;
CBrush brush(RGB(255, 0, 0));
CString csBuffer;
CRect rectFrame(lpDrawItemStruct->rcItem);
ZeroMemory(&hdi, sizeof(HDITEM));
hdi.mask = HDI_TEXT;
LPTSTR pBuf= csBuffer.GetBufferSetLength(MAX_PATH);
hdi.mask = HDI_TEXT;
hdi.pszText = pBuf;
hdi.cchTextMax = MAX_PATH;
GetItem(lpDrawItemStruct->itemID, &hdi);
csBuffer.ReleaseBuffer();
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->FillRect(rectFrame, &brush);
pDC->SetTextColor(RGB(255, 255, 255));
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(csBuffer, &lpDrawItemStruct->rcItem, DT_LEFT | DT_SINGLELINE | DT_VCENTER);
brush.Detach();
}
Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
Beginner_MFC
Not getting what else you want.see the code below(already posted) which is having definition of DrawItem
Code:
BEGIN_MESSAGE_MAP(IEHeaderCtrl, CHeaderCtrl)
END_MESSAGE_MAP
void IEHeaderCtrl::
DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
...
}
There is no "definition of DrawItem".
There is a definition of DawItem. :rolleyes:
Re: Coloring header row of CListCtrl C++
Oohhh Victor.i spelled it wrong here but at my wnd its DrawItem only
.Sorry ,plz assume it as DrawItem and tell the solution
Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
Beginner_MFC
Oohhh Victor.i spelled it wrong here but at my wnd its DrawItem only
.Sorry ,plz assume it as DrawItem and tell the solution
Again: post your real code.
Why don't you want just copy/paste the code from your IDE?
Why do you ignore code indentation (or you remove it before sending a post?)
Re: Coloring header row of CListCtrl C++
Code tags and formatting please. That mess is unreadable.
Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
GCDEF
Code tags and formatting please. That mess is unreadable.
:thumb: [Code formatted]
Re: Coloring header row of CListCtrl C++
Quote:
Originally Posted by
Beginner_MFC
Not getting what else you want.see the code below(already posted) which is having definition of DrawItem
Code:
BEGIN_MESSAGE_MAP(IEHeaderCtrl, CHeaderCtrl)
END_MESSAGE_MAP
void IEHeaderCtrl::DawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
HDITEM hdi;
CBrush brush(RGB(255, 0, 0));
CString csBuffer;
CRect rectFrame(lpDrawItemStruct->rcItem);
ZeroMemory(&hdi, sizeof(HDITEM));
hdi.mask = HDI_TEXT;
LPTSTR pBuf= csBuffer.GetBufferSetLength(MAX_PATH);
hdi.mask = HDI_TEXT;
hdi.pszText = pBuf;
hdi.cchTextMax = MAX_PATH;
GetItem(lpDrawItemStruct->itemID, &hdi);
csBuffer.ReleaseBuffer();
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
pDC->FillRect(rectFrame, &brush);
pDC->SetTextColor(RGB(255, 255, 255));
pDC->SetBkMode(TRANSPARENT);
pDC->DrawText(csBuffer, &lpDrawItemStruct->rcItem, DT_LEFT | DT_SINGLELINE | DT_VCENTER);
brush.Detach();
}
Did you debug your code? Is this DawItem (or DrawItem) called?
And BTW, do you set the ownerdraw flag to the header control items? See the Owner-Drawn Header Controls section in MSDN
Re: Coloring header row of CListCtrl C++