[C++] CListCtrl 제어

자주쓰는 Control이고 여기서 자주쓰는 기능을 정리합니다.
( 항상 사용하면서 예전에 써왔던 기능이지만 다시 검색해서 찾아보기를 반복.. ㅠ_ㅠ 치매다.. )


1. Item Select

    m_listCtrl.SetItemState(index, LVIS_SELECTED, LVIS_SELECTED);

2. Item Unselect 

    m_listCtrl.SetItemState(index, 0, LVIS_SELECTED);

3. LVN_INSERTITEM 이벤트

    InsertItem()함수로 Item추가시 발생한다. But, SetItemText()로 다른 Column값을 셋팅했을때 발생안한다.
    따라서 각 컬럼의 내용이 모두 추가되었을때 어떠한 동작을 하려고 할때는 이벤트를 이용할수 없었다.
    --> 그래서 아이템 추가시 SendMessage를 보내 다음 동작을 완료하였다..

3. CheckBox

    리스트 컨트롤의 속성을 다음과 같이 주면 Checkbox가 왼쪽에 생긴다.
    SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES);

    Item 클릭시 CheckBox가 클릭된건지 확인하는 방법
    

        ON_NOTIFY(NM_CLICK, IDC_SHELLLIST, OnNMClickShelllist)
    
        void CxListView::OnNMClickShelllist(NMHDR *pNMHDR, LRESULT *pResult)
        {    
                int rc = 0;
                 NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;

                 // Checkbox HitTest
                 LVHITTESTINFO oInfo ;
                 oInfo.pt = pNMListView->ptAction ;
                 m_listCtl.HitTest(&oInfo) ;

                /// Check Box Icon Click
                 if( oInfo.flags == LVHT_ONITEMSTATEICON ) 
                {
                     rc = 1; // 무시하고 싶으면 셋팅                      
                }

                pResult = rc;
        }

by 이카로스 | 2008/09/24 17:37 | C++/MFC | 트랙백 | 덧글(3)

트랙백 주소 : http://icarosss.egloos.com/tb/2071781
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 성실맨 at 2009/04/24 02:52
notify사건이 안먹어요
Commented by 성실맨 at 2009/04/24 02:54
우위 코드와 같이 해보았는데 SendMessage가 먹지 않네요??

누가 모르나요?//
Commented by 이카로스 at 2009/04/24 17:52
Notify는 MFC의 리소스 편집기에서 생성한 CListCtrl에서 NM_CLICK 이벤트를 생성한것입니다.

SendMessage는 보내고자하는 윈도우의 포인터로 보내줘서 처리해야해요.
예를 들어 CWnd*형태의 pTargetWnd 가 있다면 pTargetWnd->SendMessage(WM_USER+1111, 0,0);
이런식으로 보냈다면 pTargetWnd 클래스에서 ON_MESSAGE(WM_USER+1111, RecvFunction) 이렇게 받으셔야 합니다.
자세한 내용은 msdn에서 SendMessage나 PostMessage를 검색해보세요^^

:         :

:

비공개 덧글

.

<< 이전 페이지     다음 페이지 >>