CListCtrl Report Style Row Height

I want to be able to set the row height of a CListCtrl in Report stlye.  The column width can be easily set, but I can not find access to the height attribute.

I would prefer to use CustomDraw instead of using setting the owner drawn attribute.  Besides, I don't think this effects a list in Report style anyway.  

I just want wider rows with the rest of the default behavior as is.

How do I do this?
sidney091097Asked:
Who is Participating?
 
mikeblasConnect With a Mentor Commented:
The only way to do it is with ownerdraw.

 sidney> There's got to be a way of getting to this attribute.  

I'm afraid there isn't. There's not necessarily a way to access any attribute in every situation for every control.  Sure, it would be nice. But the controls are implemented by Windows, and Windows may or may not have included the ability to set those parameters.

You can start out with the ROWLIST sample that comes with Visual C++. Check out the CListViewEx::DrawItem() structure, and play with the way it initializes lpDrawItemSTruct->rcItem. You can adjust that size.

You'll probably want to steal lots of code from that sample to avoid rewriting it yourself.

..B ekiM
0
 
MT_MUCommented:
I suspect the easiest way is to change the font.

Assuming you are using this in a dialog, do something like the following in OnInitialUpdate()


CFont* pFont = m_List.GetFont(); // get the current font
LOGFONT logfont;
pFont->GetLogFont(&logfont);  // and it's characteristics - for me this returns lfHeight = -11;

logfont.lfHeight = -14;  // set a new height

m_NewFont = new CFont;  // create a new font
m_NewFont->CreateFontIndirect(&logfont); // with the appro characteristics
m_List.SetFont(m_NewFont); // and tell the list control to use it
0
 
sidney091097Author Commented:
This works except that in order to get the height I want, I have to use a font that is too big.  In addition, this effects the font of the header title which I do not want.

Thanks anyway,
Cindy
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
sidney091097Author Commented:
This works except that in order to get the height I want, I have to use a font that is too big.  In addition, this effects the font of the header title which I do not want.

Thanks anyway,
Cindy
0
 
mikeblasCommented:
> I just want wider rows

Er, do you want wider rows, or taller rows?

..B ekiM
0
 
jianliuerCommented:
Maybe you can change the image's size stored in your imagelist.


    m_LargeImageList.Create(sizex,sizey,ILC_COLOR24|ILC_MASK,10,1000);
    ListCtrl.SetImageList(&m_LargeImageList, LVSIL_SMALL);



Good Luck!
0
 
mikeblasCommented:
> change the image's size stored in your imagelist.

If you have memory to burn, I guess that's a good idea.  An image list, even when metpy, is going to use some memory based on the size of the bitmaps you've indicated you will record in it. Manipulating the image list to change the height of rows is wasteful.

..B ekiM
0
 
sidney091097Author Commented:
First, I would like to set the row HEIGHT.  Sorry for the confusion.

Second, I don't think changing the size of the bitmap is a good solution.

There's got to be a way of getting to this attribute.  CCtrlList inherits from CWnd, but I'm not sure how to handle these subitems.

0
 
V_BapatCommented:
You can take the DrawItem() code from ROWLIST sample.

But for changing the height of the row, simply handle WM_MEASUREITEM. Change lpMeasureItemStruct->itemHeight to the height you require.

If you don't find the message in the ClassWizard add it yourself. Add this line before END_MESSAGE_MAP() in the cpp file:
ON_WM_MEASUREITEM_REFLECT()

In the .h file add the following line just before DECLARE_MESSAGE_MAP():
afx_msg void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);

Vicky
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.