Dave's Brain

Browse - programming tips - win32 listview

Date: 2007nov19
Platform: win32
Language: C/C++

Q.  How do I use a list view (multi column table) in a non-Visual
    Studio Program?

A.  In the .rc (resource) file add this:

	CONTROL "", IDC_MY_LISTVIEW, "SysListView32", LVS_REPORT | LVS_SINGLESEL | LVS_NOSORTHEADER | WS_CHILD | WS_VISIBLE | WS_BORDER, 0, 0, 200, 100

Near the beginning of your program call:

	InitCommonControls();

Create the columns:

	hwndMyListView = GetDlgItem(hDlg, IDC_MY_LISTVIEW);
	ListView_InsertColumn(hwndMyListView, ...);

Do other functions with the ListView_* macros.
http://www.google.com/search?q=List-View+Controls+Macro

Once you have it going you'll notice that you can only select the first
column.  One solution is to add LVS_OWNERDRAWFIXED to the .rc file and
write your own code to draw the row -- which is a bit of a pain.
http://www.google.com/search?q=LVS_OWNERDRAWFIXED

Or, easier, you can not specify LVS_OWNERDRAWFIXED and process
the NM_CUSTOMDRAW messages (which is sent in WM_NOTIFY).
http://www.google.com/search?q=NM_CUSTOMDRAW

Add a comment

Sign in to add a comment
Copyright © 2008, dave - Code on Dave's Brain is licensed under the Creative Commons Attribution 2.5 License.