List Control ¿¡ ´Ù¸¥ Control ³Ö±â


1.¿ä¾à

ƯÁ¤ Column¿¡¼­ ´Ù¸¥ Control À» ¶ç¿ì´Â ¹æ¹ý ¼³¸í.
¿©±â¼­ »ç¿ëÇÑ ¹æ¹ýÀº ÇöÀç Cursor°¡ ÀÖ´Â À§Ä¡¸¦ ÆÄ¾ÇÇÑÈÄ ±× À§Ä¡¿¡ Àû´çÇÑ Å©±âÀÇ Edit Control¸¦ »ý¼º ½ÃŲ´Ù.


2.º»¹®

1) CListCtrl¸¦ »ó¼Ó¹Þ´Â CMyList¶ó´Â Class¸¦ ¸¸µç´Ù.
2) Memberº¯¼ö·Î CEdit m_ctrEdit¸¦ ¼±¾ðÇÑ´Ù.
3) MemberÇÔ¼ö·Î OnLButtonDown()°ú GetSubItemFromPt(point, nItem, nSubItem, rcClient)¸¦ ¼±¾ð
OnLButtonDown() : Edit Control¸¦ »ý¼º/»èÁ¦ ½ÃŰ´Â ¿ªÇÒ
GetSubItemFromPt(): ÇöÀç Cursor°¡ ÀÖ´Â °÷ÀÇ ListÁ¤º¸¸¦ °¡Á®¿Â´Ù.
4) ÇÔ¼ö ³»¿ëÀ» ±¸¼ºÇÑ ÈÄ(¿¹Á¦ ÂüÁ¶) »ç¿ëÀº
CListCtrl m_ctrList¿¡¼­ CListCtrl ---> CMyList·Î ¹Ù²ã ÁÖ¸é µÈ´Ù.


3.¿¹Á¦

½ÇÁ¦·Î Ŭ·¡½º¸¦ ±¸¼ºÇÏ¸é ´ÙÀ½°ú °°´Ù.


class CMyList : public COXGridList 

{ 

    // Construction 

public: 

    CMyList(); 

    

    // Attributes 

public: 

    CEdit m_ctrEdit; 

    

    // Operations 

public: 

    void GetSubItemFromPt(CPoint point, int &nItem, int &nSubItem, CRect &rect); 

    

    // Overrides 

    // ClassWizard generated virtual function overrides 

    //{{AFX_VIRTUAL(CMyList) 

    //}}AFX_VIRTUAL 

    

    // Implementation 

public: 

    virtual ~CMyList(); 

    

    // Generated message map functions 

protected: 

    //{{AFX_MSG(CMyList) 

    afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 

    //}}AFX_MSG 

    

    DECLARE_MESSAGE_MAP() 

}; 





CMyList::CMyList() 

{ 

} 



CMyList::~CMyList() 

{ 

} 





BEGIN_MESSAGE_MAP(CMyList, COXGridList) 

//{{AFX_MSG_MAP(CMyList) 

ON_WM_LBUTTONDOWN() 

//}}AFX_MSG_MAP 

END_MESSAGE_MAP() 



///////////////////////////////////////////////////////////////////////////// 

// CMyList message handlers 



void CMyList::OnLButtonDown(UINT nFlags, CPoint point) 

{ 

    int nItem, nSubItem; 

    CRect rcClient; 

    

    // ÇöÀç PointÀÇ ¿µ¿ª Á¤º¸¸¦ °¡Á®¿Â´Ù. 

    GetSubItemFromPt(point, nItem, nSubItem, rcClient); 

    

    // µÎ¹øÂ° SubItemÀÏ(µÎ¹øÂ° Column) °æ¿ì¿¡¸¸ ³ªÅ¸³ª°Ô ÇÔ. 

    if (nSubItem == 1)   

    { 

        if (m_ctrTimeEdit.m_hWnd == NULL) 

        { 

            // Mask Edit Control »ý¼º 

            m_ctrEdit.Create   

                (WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER|WS_HSCROLL, 

                CRect(0, 0, 30, 10), this, 1); 

            

            m_ctrEdit.MoveWindow(rcClient); 

            m_ctrEdit.ShowWindow(SW_SHOW); 

            

        } 

        else 

        { 

            m_ctrTimeEdit.MoveWindow(rcClient); 

            m_ctrTimeEdit.ShowWindow(SW_SHOW); 

        } 

    } 

    else 

    { 

        if (m_ctrTimeEdit.m_hWnd != NULL) 

        { 

            m_ctrTimeEdit.ShowWindow(SW_HIDE); 

        } 

    } 

    

    CListCtrl::OnLButtonDown(nFlags, point); 

} 



void CMyList::GetSubItemFromPt(CPoint point, int &nItem, int &nSubItem, CRect &rect) 

{ 

    LVHITTESTINFO lvhti; 

    

    // Clear the subitem text the user clicked on. 

    lvhti.pt = point; 

    SubItemHitTest(&lvhti); 

    

    nItem = lvhti.iItem; 

    nSubItem = lvhti.iSubItem; 

    GetSubItemRect(nItem, nSubItem, LVIR_LABEL, rect); 

} 


4.Âü°í

¸¶¿ì½º¸¦ ´õºí Ŭ¸¯ÇÏ´Â ¼ø°£¿¡ ³ªÅ¸³ª°Ô ÇÏ°í ½Í´Ù¸é ¸¶¿ì½º ´õºí Ŭ¸¯ ÇÔ¼ö¿¡¼­ ±¸ÇöÇØ ÁÖ¸é µÈ´Ù.

¸î°¡Áö ÇÔ¼ö¸¸ Ãß°¡ÇÏ¸é Æ¯Á¤ Column¿¡¼­¸¸ ControlÀÌ ³ªÅ¸³ª°Ô ÇÏ´Â °ÍÀ» ½±°Ô ±¸Çö ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.



- 2001.08.06 Smile Seo -