Microsoft PowerPoint - hci2-lecture11.ppt

Similar documents
Microsoft PowerPoint - hci2-lecture11.ppt

윈도우 프로그래밍의 개념

윈도우 프로그래밍의 개념

Microsoft Word - hci07-final-answer.doc

PowerPoint Template

Microsoft PowerPoint - CPP_chap7_dialogbox(2)

<4D F736F F F696E74202D203039C0E520B4EBC8ADBBF3C0DA205BC8A3C8AF20B8F0B5E55D>

adfasdfasfdasfasfadf

[제1강] 텍스트를 입력하세요

윈도우 프로그래밍의 개념

PowerPoint Presentation

04장 메시지 처리 유형

<4D F736F F F696E74202D203038C0E520C7A5C1D820C4C1C6AEB7D1205BC8A3C8AF20B8F0B5E55D>

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

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

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

KNK_C_05_Pointers_Arrays_structures_summary_v02

윈도우시스템프로그래밍

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

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

그래픽 프로그래밍

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

chap 5: Trees

쉽게 풀어쓴 C 프로그래밍

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

윈도우시스템프로그래밍

4장기본프로그래밍2

슬라이드 1

Microsoft PowerPoint - CPP_chap3

10 장세균전프로그래밍 10.1 게임룰 (1) 사람과컴퓨터가싸우는 2인용보드게임이다. (2) 사람이먼저움직이고, 컴퓨터가움직인다. (3) 세균을가로및세로방향으로 2칸까지빈칸으로이동시킬수있다. (4) 1칸을이동할경우에는복제가된다. (5) 이동한후주변세균은내편으로바뀐다.

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

Design Issues

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

PowerPoint 프레젠테이션

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

<4D F736F F F696E74202D203036C0E520BBE7BFEBC0DA20C0CEC5CDC6E4C0CCBDBA205BC8A3C8AF20B8F0B5E55D>

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

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

4S 1차년도 평가 발표자료

윈도우시스템프로그래밍

윈도우시스템프로그래밍

Visual Basic 반복문

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

윈도우즈 프로그래밍

API 매뉴얼

슬라이드 1

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

PowerPoint 프레젠테이션

1

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

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint Presentation

<4D F736F F F696E74202D20C1A C0E520B5B5C5A5B8D5C6AE20C6C4C0CF20C0D4C3E2B7C220B9D720B4D9BEE7C7D120BAE420C5ACB7A1BDBA2E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - hci2-lecture5-messagemap.ppt

Microsoft PowerPoint - ch07 - 포인터 pm0415

Visual Basic 기본컨트롤

윈도우 프로그래밍의 개념

볼륨 조절 아이콘 표시하기 만일 알림 영역에 볼륨 조절 아이콘이 표시되지 않았다면 아래의 방법을 따라합니다. 1> [시작] - [제어판] - [사운드 및 오디오 장치] 아이콘을 더블 클릭합니다. 2) [사운드 및 오디오 장치 등록 정보] 대화상자에서 [볼륨] 탭을 클릭

고객 카드

Microsoft PowerPoint - 04windows.ppt

NTD36HD Manual

Frama-C/JESSIS 사용법 소개

Microsoft PowerPoint - chap11-포인터의활용.pptx

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

11장 포인터

Chapter #01 Subject

Microsoft PowerPoint - e pptx

History Created adstarsdk Reference Manual cadvanced Digital Chips Inc. All right reserved. No part of this document may be reproduced in a

Microsoft PowerPoint - 11주차.pptx

gnu-lee-oop-kor-lec06-3-chap7

디지털영상처리3

gnu-lee-oop-kor-lec10-1-chap10

디지털영상처리3

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

PowerPoint 프레젠테이션

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Microsoft PowerPoint - Java7.pptx

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

17장 클래스와 메소드

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Endpoint Protector - Active Directory Deployment Guide

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Microsoft PowerPoint - chap06-2pointer.ppt

UI TASK & KEY EVENT

Programming hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

<4D F736F F F696E74202D203032C0E520C0AFC6BFB8AEC6BC20C5ACB7A1BDBABFCD20C1FDC7D520C5ACB7A1BDBA5FBFB5B3B2C0CCB0F8B4EB205BC8A3C8AF20B8F0B5E55D>

GDI 와 DC GDI (Graphics Device Iterface) 응용프로그램이하드웨어를제어할수있도록윈도우 OS 가제공하는모든기능 윈도우가출력장치에대한정보를스스로판단하고분석하여, 실제로사용할드라이버를불러옴 이를이용할경우, 하드웨어독립적인프로그래밍을할수있음 Widw

슬라이드 1

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

Programming hwp

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

Visual C++의 개요

01장

제11장 프로세스와 쓰레드

슬라이드 1

Microsoft PowerPoint - Visual C 새로운 기능과 사용법

Transcription:

공통컨트롤 HCI Programming 2 (321190) 2008 년가을학기 11/26/2008 박경신 공통컨트롤 (Window Common Control) Animate Control Image List Control List Control Progress Bar Control Tab Control Tree Control Spin Control Slider Control 2 공통컨트롤종류 공통컨트롤종류 컨트롤이름 MFC 클래스 역할 애니메이션 CAnimateCtrl AVI 비디오클립재생 날짜시간선택기 CDateTimeCtrl 날짜또는시간선택 확장콤보박스 CComboBoxEx 일종의콤보박스로텍스트와이미지표시 헤더 CHeaderCtrl 여러열 (column) 로표시되는텍스트의폭조절 핫키 CHotKeyCtrl 핫키입력과생성 CImageList 여러개의이미지관리 리스트 CListCtrl 텍스트와아이콘을다양한방법으로표시 달력 CMonthCalCtrl 날짜정보표시와선택 컨트롤이름 MFC 클래스역할리바 (Rebar) CRebarCtrl 다른컨트롤을자식윈도우로포함하는툴바 리치에디트 CRichEditCtrl 다양한기능을제공하는텍스트입력컨트롤 슬라이더 CSliderEx 눈금표시를가질수있는일종의스크롤바 스핀버튼 CSpinButtonCtrl 두개의화살표시로값증강 상태바 CStatusBarCtrl 프로그램의상태표시 프로그래스 CProgressCtrl 작업진행상황표시 3 4 탭 툴바 CTabCtrl CToolbarCtrl 동일한화면영역에서로다른페이지를표시및전환 명령메시지를발생시키는비트맵버튼의집합 툴팁 CTooltipCtrl 툴바버튼등다른컨트롤에조그만크기의팝업윈도우를표시 트리 CTreeCtrl 항목을계층적으로표시

공통컨트롤특징 표준컨트롤은 USER.EXE 에구현되어있지만공통컨트롤은 COMCTL32.DLL 에구현되어있다. COMCTL32.DLL 의버전에따라사용할수있는공통컨트롤의종류와기능에제약이있다. 사용하기전에반드시 ::InitCommonControls() 또는 ::InitCommonControlsEx() 를호출해야한다. MFC 를사용하는경우이과정은자동으로이루어진다. 일반적으로통지메시지를위해표준컨트롤은 WM_COMMAND 메시지를사용하지만공통컨트롤은 WM_NOTIFY 메시지를사용한다. MFC 클래스계층도 공통컨트롤클래스계층도 5 6 (Image List) 동일한크기의이미지집합 각각의이미지를배열항목처럼취급하여 0부터시작하는인덱스로참조 다른컨트롤의아이콘이나비트맵을관리하는이미지집합 사용예 트리컨트롤 (CTreeCtrl) 과리스트컨트롤 (CListCtrl) 에사용되는비트맵 생성방법 CImageList m_il; m_il.create(...); 7 8

생성함수 원본 마스크 생성예 BOOL CImageList::Create (int cx, int cy, UINT nflags, int ninitial, int ngrow); BOOL CImageList::Create (UINT nbitmapid, int cx, int ngrow, COLORREF crmask); CImageList m_il1, m_il2; m_il1.create(32, 32, ILC_COLOR4, 2, 1); m_il2.create(idb_bitmap1, 48, 1, RGB(255, 255, 255)); cx, cy: 이미지의폭과높이 ( 픽셀단위 ) nflags: 의타입지정 (ILC_COLOR4 : 4 비트 16 색상 ) ninitial: 초기에포함할이미지개수 ngrow: 새로운이미지를추가하기위해의메모리를재할당할때얼마만큼여분의메모리를할당할것인가를나타냄 nbitmapid: 비트맵리소스 ID crmask: 투명색으로사용할색상 9 IDB_BITMAP1 10 이미지추가함수 에새로운비트맵이나아이콘을추가 int CImageList::Add (HICON hicon); int CImageList::Add (CBitmap* pbmimage, COLORREF crmask); hicon: 아이콘리소스를가리키는핸들값 pbmimage: 비트맵리소스를담고있는 CBitmap 객체의주소 crmask: 투명색으로사용할색상 이미지추가예 // 두개의아이콘을에추가한다. m_il1.add(afxgetapp()->loadicon(idi_icon1)); m_il1.add(afxgetapp()->loadicon(idi_icon2)); // 비트맵을에추가한다. CBitmap bitmap; bitmap.loadbitmap(idb_bitmap1); m_il2.add(&bitmap, RGB(255, 255, 255)); 11 12

화면출력함수 그리기스타일 (nstyle) BOOL CImageList::Draw (CDC* pdc, int nimage, POINT pt, UINT nstyle); pdc: 출력할대상을나타내는디바이스컨텍스트 nimage: 출력할이미지의인덱스 pt: 출력좌표 nstyle: 그리기스타일 ( 다음페이지표참조 ) 값 ILD_BLEND25, ILD_FOCUS ILD_BLEND50, ILD_SELECTED, ILD_BLEND ILD_MASK ILD_NORMAL 의미 시스템하이라이트색상을 25% 섞어서출력 시스템하이라이트색상을 50% 섞어서출력 마스크를출력 이미지의배경색을이용하여출력하며배경색이 CLR_NONE 으로설정된경우마스크를이용하여이미지를투명하게출력 ILD_TRANSPARENT 마스크를이용하여이미지를투명하게출력 13 14 void CExImageListView::OnDraw(CDC* pdc) { CBrush brush(hs_cross, RGB(200, 200, 200)); pdc->selectobject(&brush); CRect rect; GetClientRect(&rect); pdc->rectangle(&rect); m_il.setbkcolor(clr_none); // 이미지의배경색을투명하게설정 m_il.draw(pdc, 0, CPoint(100, 100), ILD_NORMAL); m_il.draw(pdc, 0, CPoint(200, 100), ILD_TRANSPARENT); m_il.draw(pdc, 0, CPoint(300, 100), ILD_BLEND25); m_il.draw(pdc, 0, CPoint(400, 100), ILD_BLEND50); m_il.draw(pdc, 0, CPoint(500, 100), ILD_MASK); 탭컨트롤 (Tab Control) 동일한화면영역에서로다른내용을표시 정보를기능별로분류하고자할때사용 주어진탭을선택함에따라해당하는정보를분류하여보여줌 작은대화상자안에많은정보를표현하고자할때사용 m_il.setbkcolor(rgb(0, 0, 0)); // 이미지의배경색을검은색으로설정 m_il.draw(pdc, 1, CPoint(100, 200), ILD_NORMAL); m_il.draw(pdc, 1, CPoint(200, 200), ILD_TRANSPARENT); m_il.draw(pdc, 1, CPoint(300, 200), ILD_BLEND25); m_il.draw(pdc, 1, CPoint(400, 200), ILD_BLEND50); m_il.draw(pdc, 1, CPoint(500, 200), ILD_MASK); } 15 16

탭컨트롤스타일 탭컨트롤스타일 탭컨트롤통지메시지 WM_NOTIFY 통지메시지발생 통지메시지와더불어다음과같은통지코드전달 통지코드 의미 TCN_SELCHANGING 탭선택이변경되기직전이다. TCN_SELCHANGE 탭선택이변경되었다. TCN_KEYDOWN 키를눌렀다. NM_CLICK 마우스왼쪽버튼을클릭하였다. NM_RCLICK 마우스오른쪽버튼을클릭하였다. 17 18 탭컨트롤클래스 탭에사용할설정하기 탭컨트롤클래스 TCITEM 구조체 : 하나의탭에대한정보를가진구조체 CImageList * CTabCtrl::SetImageList (CImageList * pimagelist); 탭추가하기 LONG CTabCtrl::InsertItem (int nitem, TCITEM* ptabctrlitem); LONG CTabCtrl::InsertItem (int nitem, LPCTSTR lpszitem); LONG CTabCtrl::InsertItem (int nitem, LPCTSTR lpszitem, int nimage); nitem: 탭의인덱스 (0, 1,...) TCITEM: 하나의탭에대한정보를가진구조체 lpszitem: 새로운탭에표시할텍스트 ( 레이블 ) nimage: 탭에표시할이미지 ( 인덱스값 ) 19 typedef struct tagtcitem { UINT mask; DWORD dwstate; DWORD dwstatemask; LPTSTR psztext; // 탭레이블 int cchtextmax; // 탭레이블길이 int iimage; LPARAM lparam; } TCITEM, FAR *LPTCITEM; mask: TCIF_IMAGE, TCIF_PARAM, TCIF_RTLREADING, TCIF_STATE, TCIF_TEXT 20

탭컨트롤클래스 탭추가예 TCITEM tcitem; // 구조체이용탭추가 tcitem.mask = TCIF_TEXT; tcitem.psztext = "Tab #0"; m_tab.insertitem(0, &tcitem); tcitem.psztext = "Tab #1"; m_tab.insertitem(1, &tcitem); tcitem.psztext = "Tab #2"; m_tab.insertitem(2, &tcitem); 탭컨트롤클래스 탭선택변경과선택된탭알아내기 int CTabCtrl::SetCurSel (int nitem); int CTabCtrl::GetCurSel (); m_tab.insertitem(0, "Tab #0"); // 매개변수이용탭추가 m_tab.insertitem(1, "Tab #1"); m_tab.insertitem(2, "Tab #2"); 21 22 스핀버튼컨트롤 (Spin Button Control) 스핀버튼컨트롤 = 업다운컨트롤 화살표가두개붙어있어서마우스클릭이나키보드로값을증감하는용도로사용 Edit Box 안에붙여서함께사용 Auto buddy 스타일을설정하고, 탭순서를테스트박스 스핀버튼순으로설정 스핀버튼컨트롤 스핀버튼컨트롤스타일 스핀버튼컨트롤 버디컨트롤 23 24

스핀버튼컨트롤클래스 범위설정과현재범위얻기 void CSpinButtonCtrl::SetRange (short nlower, short nupper); void CSpinButtonCtrl::GetRange (int &lower, int &upper); 위치설정과현재위치얻기 int CSpinButtonCtrl::SetPos (int npos); int CSpinButtonCtrl::GetPos (); 스핀버튼컨트롤클래스 숫자의진수변경 int CSpinButtonCtrl::SetBase (int nbase); 스핀버튼컨트롤통지메시지 마우스로조작하면 WM_VSCROLL 또는 WM_HSCROLL 메시지발생 버디설정 CWnd* CSpinButtonCtrl::SetBuddy (CWnd* pwndbuddy); 25 26 프로그레스컨트롤 (Progress Bar Control) 오랜시간이걸리는작업의진행상황을시각적으로표시하는용도로사용 프로그레스컨트롤 프로그레스컨트롤스타일 27 28

프로그레스컨트롤클래스 범위설정과현재범위얻기 void CProgressCtrl::SetRange (short nlower, short nupper); void CProgressCtrl::GetRange (int& nlower, int& nupper); 위치설정과현재위치얻기 슬라이더컨트롤 (Slider Control) 주어진범위의값이나비연속적인값을입력하고자할때사용 주어진범위안에서마우스를드래그함으로써값을증가, 감소할수있게하는컨트롤 int CProgressCtrl::SetPos (int npos); int CProgressCtrl::GetPos (); 위치값증감 int CProgressCtrl::OffsetPos (int npos); int CProgressCtrl::SetStep (int nstep); int CProgressCtrl::StepIt (); 29 30 슬라이더컨트롤클래스 Animate Control 범위설정과현재범위얻기 void CSliderCtrl::SetRange( int nmin, int nmax, BOOL bredraw = FALSE ); void CSliderCtrl::GetRange( int& nmin, int& nmax ) 위치설정과현재위치얻기 int CSliderCtrl::SetPos (int npos); int CSliderCtrl::GetPos (); 슬라이더컨트롤통지메시지 NM_CUSTOMDRAW 발생 31 AVI 동영상파일을재생하고제어하는데사용 ( 사운드지원안됨 ) CAnimateCtrl 주요메소드 리소스나파일로부터 AVI clip 열기 BOOL Open( LPCTSTR lpszfilename ); BOOL Open( UINT nid ); AVI clip 실행 BOOL Play( UINT nfrom, UINT nto, UINT nrep ); ACS_AUTOPLAY로스타일이설정된경우는불필요 AVI clip의지정한프레임으로이동하여보여줌 BOOL Seek( UINT nto ); AVI clip 의실행정지 BOOL Stop( ); AVI clip 닫기 BOOL Close( ); 32