Solved

CListCtrl Report Style Row Height

Posted on 2000-04-14
9
1,479 Views
Last Modified: 2013-11-20
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?
0
Comment
Question by:sidney091097
9 Comments
 
LVL 1

Expert Comment

by:MT_MU
ID: 2717021
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
 

Author Comment

by:sidney091097
ID: 2717419
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
 

Author Comment

by:sidney091097
ID: 2717647
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
 
LVL 11

Expert Comment

by:mikeblas
ID: 2717911
> I just want wider rows

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

..B ekiM
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 1

Expert Comment

by:jianliuer
ID: 2718388
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
 
LVL 11

Expert Comment

by:mikeblas
ID: 2721419
> 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
 

Author Comment

by:sidney091097
ID: 2723296
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
 
LVL 11

Accepted Solution

by:
mikeblas earned 200 total points
ID: 2724759
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
 
LVL 3

Expert Comment

by:V_Bapat
ID: 2730221
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

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Introduction: Load and Save to file, Document-View interaction inside the SDI. Continuing from the second article about sudoku.   Open the project in visual studio. From the class view select CSudokuDoc and double click to open the header …
If you use Adobe Reader X it is possible you can't open OLE PDF documents in the standard. The reason is the 'save box mode' in adobe reader X. Many people think the protected Mode of adobe reader x is only to stop the write access. But this fe…
This video will show you how to get GIT to work in Eclipse.   It will walk you through how to install the EGit plugin in eclipse and how to checkout an existing repository.
This video discusses moving either the default database or any database to a new volume.

705 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now