Solved

Listview control in ATL

Posted on 2002-05-20
6
1,178 Views
Last Modified: 2013-11-20
hi to all,
I have to display values in Listview control using ALT. I tried with ListView_InsertColumn to add column header. It got displayed in listview. Where as when i tried to display a corresponding item using ListView_InsertItem to the list view control, I could't able to display it. Can any one suggest me how to display listview control in ATL if there is other way of doing so. The following is the code i have used.

HWND lvwhwnd;
lvwhwnd = m_ctlSysListView32.Create(m_hWnd, rc,_T("hello List View Control"), WS_TABSTOP | WS_CHILD | WS_BORDER | WS_VISIBLE | LVS_AUTOARRANGE |LVS_REPORT | LVS_OWNERDATA,WS_EX_CLIENTEDGE, IDR_LISTVIEW);

LV_COLUMN   lvColumn;
char*     szString;
szString="PAGE URL";
lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.cx = 200;

lvColumn.pszText = szString;
int val = ListView_InsertColumn(lvwhwnd, 0, &lvColumn);
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT;
//lvitem.iItem     = 0;
//lvitem.iSubItem=0;
lvitem.pszText="My";
int han=ListView_InsertItem(lvwhwnd,&lvitem);
eagerly waiting for advise,
Thanks in advance,
ravi.
0
Comment
Question by:ravikirang
  • 3
  • 3
6 Comments
 
LVL 12

Expert Comment

by:migel
ID: 7023330
Hi!
what for you comment these lines?
//lvitem.iItem     = 0;
//lvitem.iSubItem=0;
         
uncomment it and try.
0
 

Author Comment

by:ravikirang
ID: 7023349
Hi miqel Thanks for earliest reply,
But i tried even by removing coments but i could't able to see values of listview on control.
Please suggest me
ravi
0
 
LVL 12

Expert Comment

by:migel
ID: 7023371
Hi!
here is working example (in the DIALOG)

     RECT          rc;
     LV_COLUMN     lvc;
     char          szCaption[48];
     ::GetClientRect(m_hwndList, &rc);
     LoadString(_Module.GetModuleInstance(), IDS_TEMPLATE, szCaption, sizeof(szCaption));

     lvc.mask = LVCF_TEXT | LVCF_WIDTH |LVCF_SUBITEM |LVCF_FMT;
     lvc.cx = 2*rc.right/5-2;
     lvc.pszText = szCaption;
     lvc.fmt = LVCFMT_LEFT | LVCFMT_IMAGE;
     lvc.iSubItem = 0;
     ListView_InsertColumn(m_hwndList, 0, &lvc);

     LoadString(_Module.GetModuleInstance(), IDS_CREATE_DATE, szCaption, sizeof(szCaption));
     lvc.cx = rc.right/5;
     lvc.fmt = LVCFMT_CENTER;
     lvc.iSubItem = 1;
     ListView_InsertColumn(m_hwndList, 1, &lvc);

     LoadString(_Module.GetModuleInstance(), IDS_CHECK_CAPTION, szCaption, sizeof(szCaption));
     lvc.iSubItem = 2;
     ListView_InsertColumn(m_hwndList, 2, &lvc);

     LoadString(_Module.GetModuleInstance(), IDS_SEND_CAPTION, szCaption, sizeof(szCaption));
     lvc.iSubItem = 3;
     ListView_InsertColumn(m_hwndList, 3, &lvc);

// insert items
          LV_ITEM lvi;
          lvi.mask = LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM|LVIF_STATE;
          lvi.iItem = 0;
          lvi.iSubItem = 0;
          lvi.pszText = "code";
          lvi.state = nCount == 1 ? LVIS_SELECTED : 0;
          lvi.stateMask =     LVIS_SELECTED;
          lvi.iImage = 1;
          lvi.lParam = 0;
          ListView_InsertItem(hList, &lvi);
         
          lvi.mask = LVIF_TEXT;
          lvi.iSubItem = 1;
          lvi.pszText = "subitem 1";
          ListView_SetItem(hList, &lvi);
         
          lvi.iSubItem = 2;
          lvi.pszText = "subitem 2";
          ListView_SetItem(hList, &lvi);
0
ScreenConnect 6.0 Free Trial

Explore all the enhancements in one game-changing release, ScreenConnect 6.0, based on partner feedback. New features include a redesigned UI, app configurations and chat acknowledgement to improve customer engagement!

 

Author Comment

by:ravikirang
ID: 7023558
Hi,
even i tried with this code, I could able to display the columm headings but the values are not getting displayed.
when i tried
int nval = ListView_InsertItem(hList, &lvi);
A value 0 is getting stored in nval. In documentaion it was
given that it returns a value if inserted else -1 will be returned. Please correct me if i'm wrong. Help me with alternative.
ravi
0
 
LVL 12

Accepted Solution

by:
migel earned 100 total points
ID: 7023668
Hi!
remove LVS_OWNERDATA style in hte Create method and all will be ok.
0
 

Author Comment

by:ravikirang
ID: 7023685
Thankyou miqel it is working after i removed LVS_OWNERDATA.
Thanks a lot once again,
ravi
0

Featured Post

Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

In this article, I'll describe -- and show pictures of -- some of the significant additions that have been made available to programmers in the MFC Feature Pack for Visual C++ 2008.  These same feature are in the MFC libraries that come with Visual …
Introduction: Dialogs (2) modeless dialog and a worker thread.  Handling data shared between threads.  Recursive functions. Continuing from the tenth article about sudoku.   Last article we worked with a modal dialog to help maintain informat…
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.
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…

770 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