-
October 10th, 2019, 01:19 AM
#16
Re: Coloring header row of CListCtrl C++
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.
Please, post good readable, formatted code snippet. Use Code tags.
Victor Nijegorodov
-
October 10th, 2019, 02:11 AM
#17
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;
}
Last edited by 2kaud; October 10th, 2019 at 07:50 AM.
Reason: Formatting
-
October 10th, 2019, 02:33 AM
#18
Re: Coloring header row of CListCtrl C++
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!
Victor Nijegorodov
-
October 10th, 2019, 02:41 AM
#19
Re: Coloring header row of CListCtrl C++
This is a real code and compiling at my end..
-
October 10th, 2019, 03:12 AM
#20
Re: Coloring header row of CListCtrl C++
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?
Victor Nijegorodov
-
October 10th, 2019, 03:25 AM
#21
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()
}
Last edited by 2kaud; October 10th, 2019 at 07:46 AM.
Reason: Formatting
-
October 10th, 2019, 03:30 AM
#22
Re: Coloring header row of CListCtrl C++
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)
Victor Nijegorodov
-
October 10th, 2019, 05:09 AM
#23
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();
}
Last edited by 2kaud; October 10th, 2019 at 07:51 AM.
Reason: Formatting
-
October 10th, 2019, 05:23 AM
#24
Re: Coloring header row of CListCtrl C++
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.
Victor Nijegorodov
-
October 10th, 2019, 06:14 AM
#25
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
-
October 10th, 2019, 06:19 AM
#26
Re: Coloring header row of CListCtrl C++
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?)
Victor Nijegorodov
-
October 10th, 2019, 07:13 AM
#27
Re: Coloring header row of CListCtrl C++
Code tags and formatting please. That mess is unreadable.
-
October 10th, 2019, 07:52 AM
#28
Re: Coloring header row of CListCtrl C++
Originally Posted by GCDEF
Code tags and formatting please. That mess is unreadable.
[Code formatted]
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
-
October 11th, 2019, 02:41 AM
#29
Re: Coloring header row of CListCtrl C++
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
Victor Nijegorodov
-
October 11th, 2019, 04:31 AM
#30
Re: Coloring header row of CListCtrl C++
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|