Solved

Listview control in ATL

Posted on 2002-05-20
6
1,168 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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Whole sheet autoscrub still needed 19 48
VBA "SendKeys" Syntax for Multiple Keystrokes 7 103
Doc'in system (example?) BA 7 89
wordcount challenge 11 107
Here is how to use MFC's automatic Radio Button handling in your dialog boxes and forms.  Beginner programmers usually start with a OnClick handler for each radio button and that's just not the right way to go.  MFC has a very cool system for handli…
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.
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.

920 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

14 Experts available now in Live!

Get 1:1 Help Now