티스토리 뷰

프로그래밍/API

리스트박스 ListBox

에어버스 2016. 4. 30. 15:24

리스트박스

참고> LBS_SORT 가 지정되어 있으면 항목 추가 시 자동 정렬되어 순서대로 추가되지 않는다.

스타일

LBS_NOTIFY            리스트박스의 목록 중 하나를 선택하면 부모 윈도우로 통지 메시지를 보낸다
LBS_SORT               리스트의 항목들을 자동 정렬
LBS_OWNERDRAW    문자열 대신 이미지 삽입이 가능하도록 한다
LBS_MULTIPLESEL     여러개 항목을 동시에 선택할 수 있도록 한다
LBS_STANDARD        리스트박스의 가장 기본적인 스타일 집합 (LBS_NOTIFY+LBS_SORT+WS_BORDER)

통지 메시지

LBN_DBLCLK        항목을 더블클릭 했을때
LBN_ERRSPACE    메모리가 부족할때
LBN_SETFOCUS    현재 리스트에 포커스를 가질때
LBN_KILLFOCUS    포커스가 사라질때
LBN_SELCHANGE   리스트 박스에서 선택 항목이 바뀌었을때
LBN_SELCANCEL    이스트 박스에서 Cancel 이벤트가 발생되었을때

명령 메시지 : SendMessage()로 리스트 박스에 명령을 내린다

명령 메시지

내용

결과값

LB_ADDSTRING

새로운 문자열을 추가

lParam에 추가할 문자열 입력

LB_DELETESTRING

선택된 문자열을 삭제

wParam에 삭제할 항목을 지정

LB_INSERTSTRING 문자열 삽입

wParam : 삽입 위치 지정
lParam : 삽입할 문자열 입력

LB_DIR

파일 목록을 보여준다

wParam : 파일 속성 입력
lParam : 검색할 파일명 입력

LB_FINDSTRING

리스트에서 측정 문자열 찾기

wParam : 시작번호 입력
lParam : 찾은 번호를 리턴 받음

LB_GETCURSEL

현재 리스트의 커서 위치 찾기

현재 선택된 리스트 번호 리턴 받음

LB_GETTEXT

특정 위치 문자열 얻기

wParam : 특정 위치 번호
lParam : 문자열 리턴 받음

LB_GETTEXTLEN

특정 위치의 문자열 길이 얻기

wParam : 문자열 길이 리턴

대체로 결과값은 lParam 으로 넘겨주거나, SendMessage() 의 리턴값으로 넘겨준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define ID_LIST 601
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    TCHAR listItem[][30= { L"C++", L"Win32", L"MFC", L"자바" };
    TCHAR strList[128];
    int nSetSel;
    HWND hList;
    switch (message)
    {
    case WM_CREATE:
        hList = CreateWindow(TEXT("listbox"), NULL, WS_CHILD | WS_VISIBLE | LBS_STANDARD, 28026020080, hWnd, (HMENU)ID_LIST, hInst, NULL);
        for (int i = 0; i < 4; i++)
            SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)listItem[i]);
                break;
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // 메뉴 선택을 구문 분석합니다.
            switch (wmId)
            {
            case ID_LIST:
                switch (HIWORD(wParam))
                {
                case LBN_SELCHANGE:
                    int nGetSel = SendMessage(hList, LB_GETCURSEL, 00); // 함수의 리턴값
                    SendMessage(hList, LB_GETTEXT, nGetSel, (LPARAM)strList); // 리턴값이 lParam으로 들어온다
                    SetWindowText(hST2, strList);
                    break;
                }
                break;
cs
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31