Programming/C

List Control 사용하기

Tribal 2016. 11. 7. 00:11

추가(Report 기준 - List Control을 생성하고 속성 - 모양 - View - Report 선택)

1
2
3
4
5
6
7
8
9
10
/* dlg.h */
CListCtrl m_list1;
 
/* dlg.cpp */
BOOL fuction() {
    const char *szText[]={"A","B""C""D""E"};
    unsigned int nWid[]={100100100100100};
 
    MakeColumn(&m_list, szText, nWid, 5);
}
cs

List Control을 만든 후, 마우스 오른쪽 클릭을 누르면 변수 추가가 있다. 멤버 변수 추가 마법사가 실행되는데 변수 이름만 입력해주고 확인을 눌러주면 헤더파일에 자동으로 변수가 생성될 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void List_add(CListCtrl m_list4) {
    const DWORD conbuffer[] = {12345678910};
    char szText[MAX_PATH]="";
    LVITEM lItem;            // 중요!
 
    lItem.mask=LVIF_TEXT;                    // 기본 세팅(Text를 입력 알림)
    lItem.iItem=g_tcount;                    // 행 번호
    lItem.iSubItem=0;                        // 열 번호
 
    memset(szText, 0, MAX_PATH);
    sprintf_s(szText, "%x"1);
    lItem.pszText=(LPSTR)szText;            // 추가할 Text 세팅
    m_list4->InsertItem(&lItem);            // 첫 번째 Item은 반드시 InsertItem으로!
 
    for(int i=1;i<10; i++) {
        lItem.iSubItem=i;                    // 열 번호를 추가 (사전에 컬럼을 미리 갯수만큼 만들어둬야 함)
        sprintf_s(szText, "0x%08x", conbuffer[i-1]);
        lItem.pszText=(LPSTR)szText;
        m_list4->SetItem(&lItem);            // 두 번째 Item부터는 SubItem이므로 SetItem으로!
    }
 
    g_tcount++;
}
cs


삭제

1
2
3
4
5
m_list.DeleteAllItems();        // 전체 삭제
 
for(index=0; index<16; index++) {
    m_list->DeleteItem(0);        // 0번 행을 지우면 1번이 0번으로 올라오므로...
}
cs


수정

1
2
3
4
5
6
7
8
9
10
11
12
13
unsigned long row = 0;        //행 번호
unsigned long column = 1;    //열 번호
 
memset(szText, 0, MAX_PATH);
sprintf_s(szText, "0x%08x"54);
m_list->SetItem(row, column, LVIF_TEXT, szText, NULLNULLNULLNULLNULL);    
// 반드시 SetItem 함수에 인자를 이런 식으로!
/* 인자 설명 */
// 1번 인자(row) : 몇 번째 행
// 2번 인자(column) : 몇 번째 열
// 3번 인자(LVIF_TEXT) : mask를 나타내는데 text로 할것이므로...
// 4번 인자(szText) : 변경하고자 하는 문자열 내용
// 5번 부터는 List Control에 Image를 넣고 할 때 사용하므로 패스!
cs


검색

1
2
3
4
5
6
7
8
9
DWORD Find_List(CListCtrl* m_list, LPSTR str) {
    LVFINDINFO lfi;
    char szText[512= {0};
        
    lfi.flags = LVFI_STRING;
    sprintf(szText, str);            //조금만 바꾸면 유용하게 사용가능
    lfi.psz = szText;
    return m_list->FindItem(&lfi, -1);    // Index 
}
cs


값 추출

1
2
3
4
5
6
7
CString szText = NULL;        // 문자열을 저장할 녀석
unsigned long row = 1;
unsigned long column = 2;
//int result;
 
szText = m_list->GetItemText(row, column);    //행열(1,2) 위치의 문자열을 가져와 저장
//result = strtol(szText, NULL, 16)    문자열이 아닌 정수 값이 필요한 경우, 이 녀석을 사용!
cs


색 변경

차후에 추가...