음악, 삶, 개발
16. Graphical User Interfaces 본문
< 목차 >
16.1 User interface alternatives
16.2 The "Next" button
16.3 A simple window
16.3.1 A callback function
16.3.2 A wait loop
16.3.3 A lamda expression as a callback
16.4 Button and other Widgets
16.4.1 Widgets
16.4.2 Buttons
16.4.3 In box and Out box
16.4.4 Menus
16.5 An example
16.6 Control inversion
16.7 Adding a menu
16.8 Debugging GUI code
16.1 User interface alternatives
프로그래머로써 User Interface 를 제공할수있는 3가지 주요 선택지가 있다.
- console 의 input 과 ouput : iostream 을 사용한다.
- GUI 라이브러리 : 윈도우, 맥 모두 동일하게 보여지기위해서 할수있는 유일한 선택이다.
- 웹브라우저 interface : remote access 를 요구하는 프로그램에 이상적이다. (하지만 여기서 다 설명 못함, 너무 방대)
언제나 프로그램의 logic 과 GUI logic (input, ouput 을 위한 logic) 을 분리하는것이 중요하다.
16.2 The "Next" button
GUI 는 사용자의 mouse 가 어디있는지, mouse 로 뭘하는지를 추적한다.
프로그램이 action 을 원한다면 아래 3가지를 해야한다.
- GUI 에게 무엇을 기대하는지 말해줘야함. ex) 누군가가 next button 을 눌렀다.
- 사용자가 무언가를 했을때 뭘 해야할지.
- GUI 가 action 을 detect 할때까지 기다려야함.
GUI 프로그래밍은 system 에 의해 제공되는것이 아니라, 우리 스스로 만들어야한다.
16.3 A simple window
system : 운영체제와 GUI 라이브러리의 조합.
system 은, 지속적으로 마우스가 있는지, 마우스 버튼이 눌렸는지 안눌렸는지 추적한다.
프로그램은 스크린의 특정 영역에 대해 관심을 표할수있고,
system 에게 이 특정 영역에서 무언가가 일어났을때 함수를 호출하라고 부탁할수있다.
이렇게 system 이 호출해주는 함수를 callback 함수라고한다.
mouse button 이 우리의 button 을 눌렀을때, 먼가를 하고싶다면
아래와 같은 과정을 만들어내야한다.
- button 을 정의한다.
- button 을 스크린에 표시되게 한다.
- GUI 가 호출해줄 함수를 정의한다.
- GUI 에게 button 과 함수에 대해 알려준다.
- GUI 가 우리의 함수를 호출할때까지 기다린다.
16.3.1 A callback function
16.3.2 A wait loop
16.3.3 A lamda expression as a callback
16.4 Button and other Widgets
16.4.1 Widgets
16.4.2 Buttons
16.4.3 In box and Out box
16.4.4 Menus
16.5 An example
16.6 Control inversion
16.7 Adding a menu
16.8 Debugging GUI code
생략.