2010年1月15日 星期五

CuListCtrl - Encapsulates the functionality of a "list view control"

// Encapsulates the functionality of a "list view control"

m_ListCtrl.Create( WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_SHOWSELALWAYS , rt, hWnd, (UINT)&1);



// CuListCtrl.h

class CuListCtrl
{
private:
    CuWnd m_ListCtrlWnd;
public:
    CuListCtrl(void);
    ~CuListCtrl(void);

    virtual BOOL Create( DWORD dwStyle, const RECT& rect,
        HWND hParentWnd, UINT nID );

    int InsertColumn( int nCol, const LVCOLUMN* pColumn );
    int InsertColumn( int nCol, TCHAR * lpszColumnHeading, 
        int nFormat = LVCFMT_LEFT, int nWidth = -1,int nSubItem = -1 );

    int InsertItem( const LVITEM* pItem );
    int InsertItem( int nItem,  TCHAR * lpszItem );
    int InsertItem( int nItem,  TCHAR * lpszItem, int nImage );
    int InsertItem( UINT nMask, int nItem, TCHAR * lpszItem, 
        UINT nState, UINT nStateMask, int nImage, LPARAM lParam );

    BOOL SetItemText( int nItem, int nSubItem, TCHAR * lpszText );

};



// CuListCtrl.cpp

CuListCtrl::CuListCtrl(void)
{
}

CuListCtrl::~CuListCtrl(void)
{
}

BOOL CuListCtrl::Create(
                    DWORD dwStyle,
                    const RECT& rect,
                    HWND hParentWnd,
                    UINT nID 
                    )
{
    return m_ListCtrlWnd.Create(WC_LISTVIEW , L"", dwStyle, rect, hParentWnd, nID);
}

int CuListCtrl::InsertColumn( int nCol, const LVCOLUMN* pColumn )
{
    return ListView_InsertColumn(m_ListCtrlWnd.GetSafeHwnd() , nCol, pColumn) ;
}

int CuListCtrl::InsertColumn( int nCol, TCHAR *lpszColumnHeading, 
                 int nFormat /* = LVCFMT_LEFT */, int nWidth /* = -1 */ ,int nSubItem /* = -1 */)
{
    LV_COLUMN lvC = {0};
    lvC.mask = LVCF_FMT | LVCF_TEXT ;

    if( nWidth != -1 )
    {
        lvC.mask = lvC.mask | LVCF_WIDTH;
        lvC.cx = nWidth;
    }

    if( nSubItem != -1 )
    {
        lvC.mask = lvC.mask | LVCF_SUBITEM;
        lvC.iSubItem = nSubItem;
    }

    lvC.fmt = nFormat;
    lvC.pszText = lpszColumnHeading;

    return this->InsertColumn( nCol, &lvC);

}

int CuListCtrl::InsertItem( const LVITEM* pItem )
{
    return  ListView_InsertItem(m_ListCtrlWnd.GetSafeHwnd(), pItem);
}

int CuListCtrl::InsertItem( int nItem,  TCHAR * lpszItem )
{

    LVITEM lvI = {0};
    lvI.mask = LVIF_TEXT ;
    lvI.iItem = nItem;
    lvI.pszText = lpszItem;

    return this->InsertItem( &lvI);

}

int CuListCtrl::InsertItem( int nItem,  TCHAR * lpszItem, int nImage )
{
    LVITEM lvI = {0};
    lvI.mask = LVIF_TEXT | LVIF_IMAGE ;
    lvI.iItem = nItem;
    lvI.pszText = lpszItem;
    lvI.iImage = nImage;

    return this->InsertItem( &lvI);
}

int CuListCtrl::InsertItem( UINT nMask, int nItem, TCHAR * lpszItem, 
                           UINT nState, UINT nStateMask, int nImage, LPARAM lParam )
{

    LVITEM lvI = {0};
    lvI.mask = nMask;
    lvI.iItem = nItem;
    lvI.pszText = lpszItem;
    lvI.state = nState;
    lvI.stateMask = nStateMask;
    lvI.iImage = nImage;
    lvI.lParam = lParam;

    return this->InsertItem( &lvI);

}

BOOL CuListCtrl::SetItemText( int nItem, int nSubItem, TCHAR * lpszText )
{
    ListView_SetItemText( m_ListCtrlWnd.GetSafeHwnd(), nItem, nSubItem, lpszText)
    return true;
}

這個是很無聊的封裝, 但在CE上作業時, 不開MFC下, 也只能包一包

沒有留言:

張貼留言