|
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 - |