Microsoft PowerPoint - 09-CE-14-리스트콤보박스

Similar documents
Microsoft PowerPoint - 09-CE-5-윈도우 핸들

윈도우즈 프로그래밍

04장 메시지 처리 유형

Microsoft PowerPoint - 09-CE-24-채팅 프로그램

Microsoft PowerPoint - 09-CE-25-오목게임

<4D F736F F F696E74202D203031C0E520C0A9B5B5BFEC20C7C1B7CEB1D7B7A1B9D620B1E2C3CA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

유저영역후킹탐지시스템 팀 명 : D.N.F (Do Not Fishing) 지도교수 : 유승재교수님 팀 장 : 신동순 팀 원 : 서현찬이치목 중부대학교정보보호학과

Microsoft PowerPoint - hci2-lecture8.ppt

2014 년정보보호졸업작품보고서 파일유출방지시스템 지도교수님 : 양환석교수님 팀명 : LKC Security 팀원 : 이호영, 김상우, 최유택 중부대학교정보보호학과

Microsoft PowerPoint - hci2-lecture8.ppt

MFC 프로그래밍

윈도우즈 프로그래밍

1장 윈도우 프로그래밍 들어가기

윈도우시스템프로그래밍

PowerPoint Template

Microsoft PowerPoint - 09-CE-7-선과 도형

Microsoft PowerPoint - 04windows.ppt

게임 기획서 표준양식 연구보고서

<33372DC0A9B5B5BFECC7C1B7CEB1D7B7A1B9D62E687770>

윈도우 프로그래밍

Chapter 1. MFC 시작하기

2015 년정보보호학과졸업작품보고서 USB 를이용한 System Lock 및 File Security Service 팀명 : Team IU ( Intelligent USB ) 지도교수 : 양정모교수님 조장 : 조상일 유승우 조한슬 중부대학교정보보호학과

윈도우 프로그래밍의 개념

예제와 함께 배워보는 OllyDbg사용법

Visual Basic 반복문

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - hci2-lecture5-messagemap.ppt

Microsoft PowerPoint - 09-CE-23-윈도우 소켓

Microsoft PowerPoint - hci2-lecture1.ppt

어댑터뷰

Microsoft PowerPoint - hci2-lecture1.ppt

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

Visual Basic 기본컨트롤

윈도우 프로그래밍의 개념

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

윈도우즈 프로그래밍

5장 MFC기반 다지기

PowerPoint 프레젠테이션

윈도우시스템프로그래밍

PowerPoint 프레젠테이션

Programming hwp

Index

Studuino소프트웨어 설치

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

윈도우 프로그래밍의 개념

PowerPoint 프레젠테이션

2009년 상반기 사업계획

Frama-C/JESSIS 사용법 소개

윈도우즈 프로그래밍

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

윈도우시스템프로그래밍

Microsoft PowerPoint - (제15강)Win32 API.ppt

Visual Basic Visual Basic 소개

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

#편집인협회보381호_0422

Lab 3. 실습문제 (Single linked list)_해답.hwp

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

윈도우시스템프로그래밍

설계란 무엇인가?

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

비주얼프로그래밍 (Visual Basic .NET)

adfasdfasfdasfasfadf

BMP 파일 처리

제 2 장 기본 사용법

슬라이드 1

K&R2 Reference Manual 번역본

Microsoft PowerPoint - 08-C-App-19-Quick-Preprocessor

tiawPlot ac 사용방법

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

Microsoft PowerPoint - chap10-함수의활용.pptx

4장기본프로그래밍2

슬라이드 1

리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ

1장. 리스트

Microsoft PowerPoint - chap01-C언어개요.pptx

B _00_Ko_p1-p51.indd

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

슬라이드 1

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Microsoft PowerPoint - hci2-lecture11.ppt

Microsoft PowerPoint - hci2-lecture11.ppt

Microsoft PowerPoint - 07-Data Manipulation.pptx

히스토그램구하기 사전준비 : 히스토그램을저장할메모리가필요함 필요한메모리개수 à 전체영상의픽셀은그값이 0 ~ 255이므로 256 개의메모리필요함 영상을구성하는픽셀의개수는매우크므로메모리형식은 unsigned long으로해야함 ( unsigned 란 +/- 를고려하지않는다는

Convenience Timetable Design

Tcl의 문법

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

설계란 무엇인가?

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Transcription:

순천향대학교컴퓨터학부이상정 1 학습내용 리스트박스컨트롤 다이얼로그와리스트박스 콤보박스컨트롤 순천향대학교컴퓨터학부이상정 2

리스트박스컨트롤 순천향대학교컴퓨터학부이상정 3 리스트박스컨트롤 사용자가선택할수있는항목들을여러개나열해두고선택할수있는컨트롤 윈도우클래스의이름은 "listbox" 생성예 hlist=createwindow(l"listbox",null,ws_child WS_VISIBLE WS_BORDER WS_VSCROLL LBS_NOTIFY,10,30,100,100, 100 100 hwnd,(hmenu)idc_listbox, g_hinst,null); 통지메시지 컨트롤이부모윈도우에게 WM_COMMAND와함께보내는메시지 컨트롤 ID, wmid = LOWORD(wParam); 통지메시지, wmevent = HIWORD(wParam); 리스트박스컨트롤메시지 부모윈도우가리스트박스컨트롤에게보내는메시지 순천향대학교컴퓨터학부이상정 4

리스트박스컨트롤스타일 스타일 LBS_MULTIPLESEL LBS_NOTIFY 설명 여러개의항목을선택할수있도록한다. 이스타일을적용하지않으면디폴트로하나만선택할수있다. 사용자가목록중하나를선택했을때부모윈도우로통지메시지를보내도록한다.( 필수 ) LBS_SORTSORT 추가된항목들을자동정렬하도록한다. LBS_OWNERDRAW 문자열이아닌비트맵이나그림을넣을수있도록한다. LBS_STANDARD LBS_NOTIFY LBS_SORT WS_BORDER 순천향대학교컴퓨터학부이상정 5 통지메시지 메시지 설명 LBN_DBLCLK 리스트박스를더블클릭하였다. LBN_ERRSPACE 메모리가부족하다. LBN_KILLFOCUS 키보드포커스를잃었다. LBN_SELCANCEL 사용자가선택을취소하였다. LBN_SELCHANGE 사용자에의해선택이변경되었다. LBN_SETFOCUS 키보드포커스를얻었다. 순천향대학교컴퓨터학부이상정 6

리스트박스메시지 리스트박스메시지 LB_ADDSTRING 설명 리스트박스에항목을추가한다. lparam 으로추가하고자하는문자열의번지를넘겨주면된다. LB_DELETESTRING 항목을삭제한다. wparam으로항목의번호를넘겨주며남은문자열수를리턴한다. LB_GETCURSEL 현재선택된항목의번호 (Index) 를조사해준다. 지정한항목의문자열을읽는다. wparam 에항목번호, LB_GETTEXT lparam에문자열버퍼의번지를넘겨주면버퍼에문자열을 채워준다. LB_GETCOUNT 항목의개수를조사한다. LB_SETCURSEL wparam이지정한항목을선택하도록한다. 순천향대학교컴퓨터학부이상정 7 예제 36: 리스트박스컨트롤예 1 리스트박스컨트롤의선택된항목으로윈도우타이틀을변경하는예 순천향대학교컴퓨터학부이상정 8

임베디드 #define 소프트웨어 IDC_LISTBOX 500 #define NumList 6 HWND hlist; TCHAR Items[][15]=L"Apple",L"Orange" Orange,L"Grape" Grape,L"Melon" Melon,L"Pear" Pear, L"Banana"; LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) switch (message) case WM_COMMAND: wmid = LOWORD(wParam); wmevent = HIWORD(wParam); // 메뉴의선택영역을구문분석합니다. switch (wmid) case IDC_LISTBOX: if (wmevent == LBN_SELCHANGE) int n; n = SendMessage(hList, LB_GETCURSEL, 0,0); SetWindowText(hWnd, Items[n]); case IDM_HELP_ABOUT: case WM_CREATE: hlist=createwindow(l"listbox", NULL, WS_CHILD WS_VISIBLE WS_BORDER WS_VSCROLL LBS_NOTIFY,10,30,100,100, hwnd, (HMENU)IDC_LISTBOX, ghinst g_hinst, NULL); for (int i=0; i<numlist; i++) SendMessage(hList, LB_ADDSTRING,0, (LPARAM)Items[i]); 순천향대학교컴퓨터학부이상정 9 예제 37: 리스트박스컨트롤예 2 예제 36 의예에아래와같이리스트를추가, 삭제하는버튼과에디트컨트롤추가 순천향대학교컴퓨터학부이상정 10

예제 37: 리스트박스컨트롤예 2 순천향대학교컴퓨터학부이상정 11 #define ID_LISTBOX 500 #define ID_Edit 501 #define ID_BtnAdd 502 #define ID_BtnDel 503 #define NumList 2 HWND hlist, hedit, hbtnadd, hbtndel; TCHAR Items[][15]=L"Apple", L"Orange"; Orange; LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT ps; HDC hdc; TCHAR sztext[128]; int index; switch (message) case WM_COMMAND: wmid = LOWORD(wParam); am) wmevent = HIWORD(wParam); switch (wmid) case ID_LISTBOX: if (wmevent == LBN_SELCHANGE) index = SendMessage(hList, LB_GETCURSEL, 0, 0); SendMessage(hList, LB_GETTEXT, index, (LPARAM)szText); SetWindowText(hWnd, sztext); 순천향대학교컴퓨터학부이상정 12

case ID_BtnAdd: SendMessage(hEdit, WM_GETTEXT, (WPARAM)128, (LPARAM)szText); if (lstrlen(sztext)) SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)szText); case ID_BtnDel: index = SendMessage(hList, LB_GETCURSEL, 0, 0); if (index!= LB_ERR) SendMessage(hList, LB_DELETESTRING, (WPARAM)index, 0); case IDM_HELP_ABOUT: case WM_CREATE: hlist=createwindow(l"listbox", NULL, WS_CHILD WS_VISIBLE WS_BORDER WS_VSCROLL LBS_NOTIFY, 10,30,100,200, hwnd, (HMENU)ID_LISTBOX, g_hinst, NULL); for (int i=0; i<numlist; i++) SendMessage(hList, LB_ADDSTRING, 0, (LPARAM)Items[i]); hedit = CreateWindow(L"edit", NULL, WS_CHILD WS_VISIBLE WS_BORDER ES_AUTOHSCROLL, 120,30,100,20, 100 hwnd, (HMENU)ID_Edit, Edit g_hinst, NULL); hbtnadd = CreateWindow(L"button", L"ADD LIST", WS_CHILD WS_VISIBLE BS_PUSHBUTTON, 120, 80, 100, 30, hwnd, (HMENU)ID_BtnAdd, g_hinst, NULL); hbtndel = CreateWindow(L"button", L"DELETE LIST", WS_CHILD WS_VISIBLE BS_DEFPUSHBUTTON, 120, 130, 100, 30, hwnd, (HMENU)ID_BtnDel, g_hinst, NULL); 순천향대학교컴퓨터학부이상정 13 다이얼로그와리스트박스 순천향대학교컴퓨터학부이상정 14

다이얼로그컨트롤 다이얼로그에서컨트롤생성 CreateWindow() 함수가아닌도구상자를사용하여그림 API LONG SendDlgItemMessage(HWND hdlg, int niddlgitem, UINT Msg, WPARAM wparam, LPARAM lparam ); 다이얼로그에서컨트롤로메시지를전송 hdlg: 다이얼로그핸들 niddlgitem: 컨트롤 ID Msg: 메시지 순천향대학교컴퓨터학부이상정 15 예제 38: 다이얼로그리스트박스컨트롤예 스크린을터치하면나타나는다이얼로그의리스트박스의항목을선택하면해당항목이표시된메시지박스를표시하는예 순천향대학교컴퓨터학부이상정 16

예제 38: 리소스추가 다이얼로그 (IDD_DIALOG1) DIALOG1) 추가리소스 버튼컨트롤 : IDOK, IDCANCEL 리스트박스컨트롤 : IDC_LIST1 (Use Tabstops: True) 순천향대학교컴퓨터학부이상정 17 예제 38: 코드 (1) INT_PTR CALLBACK ListboxDlgProc(HWND, UINT, WPARAM, LPARAM); TCHAR items[][30]= L"Korea tseoul", L"France tparis", L"England tlondon", L"Japan ttokyo", L"USA twashington"; // 속성을 LBS_USETABSTOPS 사용 int postab[1] = 50; TCHAR selectstr[128]; LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) switch (message) case WM_LBUTTONDOWN: // 다이얼로그생성 DialogBox(g_hInst, MAKEINTRESOURCE(IDD_DIALOG1), hwnd, ListboxDlgProc); MessageBox(hWnd, selectstr, L"Select", MB_OK); 순천향대학교컴퓨터학부이상정 18

INT_PTR CALLBACK ListboxDlgProc(HWND hdlg, UINT message, WPARAM wparam, LPARAM lparam) switch (message) case WM_INITDIALOG: for (int i=0; i<5; i++) SendDlgItemMessage(hDlg, IDC_LIST1, LB_ADDSTRING, 0, (LPARAM)items[i]); SendDlgItemMessage(hDlg, IDC_LIST1, LB_SETTABSTOPS, 1, // 탭갯수 (LPARAM)posTab); // 탭포지션 SendDlgItemMessage(hDlg, IDC_LIST1, LB_SETCURSEL, 0, 0); case WM_COMMAND: switch (LOWORD(wParam)) case IDOK: int select = SendDlgItemMessage(hDlg, IDC_LIST1, LB_GETCURSEL, 0, 0); SendDlgItemMessage(hDlg, IDC_LIST1, LB_GETTEXT, select, (LPARAM)selectStr); EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; case IDCANCEL: case WM_CLOSE: EndDialog(hDlg, IDOK); return (INT _ PTR)TRUE; EndDialog(hDlg, g, message); return (INT_PTR)TRUE; 순천향대학교컴퓨터학부이상정 19 예제 38: 코드 (2) 콤보박스 순천향대학교컴퓨터학부이상정 20

콤보박스컨트롤 콤보박스는리스트박스와에디트박스의기능을통합 리스트박스는리스트박스에있는항목만선택가능하고, 화면을넓게차지하는단점을보완, 대부분의속성이리스트박스와유사 윈도우클래스의이름은 "combobox" 생성예 hcombo=createwindow(l"combobox" CreateWindow(L,NULL, WS_CHILD WS_VISIBLE CBS_DROPDOWN, 10,30,100,200, hwnd, (HMENU)ID_COMBOBOX, g_hinst,null); 통지메시지 컨트롤이부모윈도우에게 WM_COMMAND와함께보내는메시지 컨트롤 ID, wmid = LOWORD(wParam); 통지메시지, wmevent = HIWORD(wParam); 콤보박스컨트롤메시지 부모윈도우가콤보박스컨트롤에게보내는메시지 순천향대학교컴퓨터학부이상정 21 콤보박스컨트롤스타일 스타일 설명 CBS_SIMPLE 에디트만가진다. CBS_DROPDOWN 에디트와리스트박스를가진다. CBS_DROPDOWNLIST 리스트박스만가지며에디트에항목을입력할수는없다. 순천향대학교컴퓨터학부이상정 22

통지메시지 통지메시지 CBN_CLOSEUP 내용리스트가없어지는경우 CBN_DBLCLK 더블클릭 ( 탭핑 ) CBN_DROPDOWN CBN_EDITCHANGE CBN_EDITUPDATE CBN_SELCHANGE 다운버튼누른경우에디트영역에서글자변경시에디트영역에서글자변경직전선택된경우 순천향대학교컴퓨터학부이상정 23 콤보박스메시지 메시지 CB_ADDSTRING CB_DELETESTRING CB_GETCOUNT CB_GETCURSEL CB_GETDROPPEDWIDTH CB_GETTOPINDEX CB_LIMITTEXT CB_SETCURSEL CB_SETTOPINDEX 내용콤보박스항목추가항목삭제전체항목수선택된항목버튼을누를경우내려올높이첫번째나타날항목입력문자수지정선택된항목으로지정첫번째나타날항목지정

예제 39: 콤보박스컨트롤예 콤보박스컨트롤의선택된항목으로윈도우타이틀을변경하는예 순천향대학교컴퓨터학부이상정 25 예제 39: 코드 (1) #define ID_COMBOBOX 500 #define NumCombo 6 TCHAR Items[][15]=L"Apple",L"Orange",L"Grape",L"Melon",L"Pear", L"Banana"; TCHAR sztext[128]; static HWND hcombo; LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) switch (message) case WM_COMMAND: wmid = LOWORD(wParam); wmevent = HIWORD(wParam); // 메뉴의선택영역을구문분석합니다. switch (wmid) case ID_COMBOBOX: switch (HIWORD(wParam)) case CBN_SELCHANGE: int i = SendMessage(hCombo, CB_GETCURSEL,0,0); SendMessage(hCombo, CB_GETLBTEXT, i, (LPARAM)szText); SetWindowText(hWnd, sztext); 순천향대학교컴퓨터학부이상정 26

예제 39: 코드 (2) case CBN_EDITCHANGE: GetWindowText(hCombo, sztext, 128); SetWindowText(hWnd,szText); case IDM_HELP_ABOUT: case WM_CREATE: hcombo = CreateWindow(L"combobox", NULL, WS_CHILD WS_VISIBLE CBS_DROPDOWN, 10,30,100,200, hwnd, (HMENU)ID_COMBOBOX, g_hinst,null); for (int i=0; i<numcombo; i++) SendMessage(hCombo, CB_ADDSTRING,0, (LPARAM)Items[i]); g_hwndcommandbar = CommandBar_Create(g_hInst, hwnd, 1); CommandBar_InsertMenubar(g_hWndCommandBar, g_hinst, IDR_MENU, 0); CommandBar_AddAdornments(g_hWndCommandBar, 0, 0); 순천향대학교컴퓨터학부이상정 27 과제 11 아래와같이두개의리스트박스에서다음과같이동작하는프로그램 버튼 > 이나콤보박스 Add(>) 를선택하면왼쪽의리스트박스의선택된항목이오른쪽으로이동 버튼 < 이나콤보박스 Delete(<) 를선택하면오른쪽의리스트박스의선택된항목이왼쪽으로이동 순천향대학교컴퓨터학부이상정 28