CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4
  1. #1
    Join Date
    Apr 1999
    Posts
    23

    Hide a column in a listctrl programmatically?

    Is it possible to hide programmatically a column in a listctrl ?
    T.I.A.


  2. #2
    Join Date
    May 1999
    Posts
    6

    Re: Hide a column in a listctrl programmatically?

    CListCtrl::SetColumnWidth(nCol, 0);

    "Geek used to be a four-letter word. Now it's a six-figure one."

  3. #3
    Join Date
    May 1999
    Posts
    22

    Re: Hide a column in a listctrl programmatically?

    I got a SDI application with listView. I can load
    MS-Access files and view any recordset of
    database. Sometime I need to insert a new column,
    while sometime I need to delete some columns.
    I worked around for hours and hours and could
    not found the olution: how to delete columns
    from the a listview? I wish someone can give
    me a clue.

    Thanks.




  4. #4
    Join Date
    May 1999
    Location
    Canada
    Posts
    36

    Re: Hide a column in a listctrl programmatically?

    There may be an easier was to get the column R click but I do not know. Let me see if I can extract what I did.. This should get you going. A right click on the column displays a popup menu to either delete or insert a new column.


    #define MK_HEADER 0x1000


    BEGIN_MESSAGE_MAP(CView_List, CView)
    //{{AFX_MSG_MAP(CView_List)
    ON_WM_RBUTTONDOWN()
    ON_COMMAND(ID_COLUMN_DELETE, OnColumnDelete)
    ON_UPDATE_COMMAND_UI(ID_COLUMN_DELETE, OnUpdateColumnDelete)
    ON_COMMAND_RANGE(ID_COLUMN_INSERT0, ID_COLUMN_INSERT9, OnColumnInsert)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()

    // need to make a continuious list of resources ID_COLUMN_INSERT0- ID_COLUMN_INSERT9
    void CView_List::OnRButtonDown(UINT nFlags, CPoint point)
    {
    if(GetFocus() == this && (nFlags & MK_HEADER) == MK_HEADER) //mouse was Over header
    {
    m_CurColumn = nFlags & 0x0fff;

    CMenu aMenu;
    CMenu bMenu;
    int NumOfDeletedCol = anum;//max of 10
    int ColNum;

    bMenu.CreatePopupMenu();
    for(ColNum=0; ColNum< NumOfDeletedCol; ColNum++)
    {
    bMenu.AppendMenu(MF_STRING, ID_COLUMN_INSERT0 + ColNum, m_gListColumn[ColNum].pszText);
    }

    aMenu.CreatePopupMenu();
    aMenu.AppendMenu(MF_STRING|MF_POPUP|(ColNum? MF_ENABLED:MF_GRAYED), (UINT)bMenu.m_hMenu, "Insert");
    aMenu.AppendMenu(MF_STRING, ID_COLUMN_DELETE, "Delete");

    aMenu.TrackPopupMenu(TPM_CENTERALIGN|TPM_RIGHTBUTTON, point.x, point.y, AfxGetMainWnd());
    aMenu.DestroyMenu();
    }
    }
    else
    CView::OnRButtonDown(nFlags, point);
    }



    void CView_List::OnColumnDelete()
    {
    //make sure m_CurColumn is valid
    m_MyListCtrl.DeleteColumn(m_CurColumn);
    }

    void CView_List::OnColumnInsert(UINT nID)
    {
    m_MyListCtrl.InsertColumn(m_CurColumn, &m_gListColumn[nID- ID_COLUMN_INSERT0]);
    }



    void CMyHeaderCtrl::OnRButtonDown(UINT nFlags, CPoint point)
    {
    // Determine the column
    HD_HITTESTINFO hd_hittestinfo;
    hd_hittestinfo.pt = point;

    SendMessage(HDM_HITTEST, 0, (LPARAM)(&hd_hittestinfo));
    if(hd_hittestinfo.flags == HHT_ONHEADER || hd_hittestinfo.flags == HHT_NOWHERE)
    {
    ClientToScreen(&point);
    LPARAM lParam = point.x + (((DWORD)point.y) << 16);

    if(hd_hittestinfo.flags == HHT_NOWHERE)
    hd_hittestinfo.iItem = GetItemCount();

    GetParent()->SendMessage(WM_RBUTTONDOWN, hd_hittestinfo.iItem | MK_HEADER, lParam);
    }
    else
    CHeaderCtrl::OnRButtonDown(nFlags, point);
    }







Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured