티스토리 뷰
리스트박스
참고> 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 : 삽입 위치 지정 |
LB_DIR |
파일 목록을 보여준다 |
wParam : 파일 속성 입력 |
LB_FINDSTRING |
리스트에서 측정 문자열 찾기 |
wParam : 시작번호 입력 |
LB_GETCURSEL |
현재 리스트의 커서 위치 찾기 |
현재 선택된 리스트 번호 리턴 받음 |
LB_GETTEXT |
특정 위치 문자열 얻기 |
wParam : 특정 위치 번호 |
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, 280, 260, 200, 80, 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, 0, 0); // 함수의 리턴값
SendMessage(hList, LB_GETTEXT, nGetSel, (LPARAM)strList); // 리턴값이 lParam으로 들어온다
SetWindowText(hST2, strList);
break;
}
break; |
cs |