GTK+ 프로그래밍 (2) SNSLAB 발표 : 문동규.

Slides:



Advertisements
Similar presentations
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
Advertisements

제 2 장 프로그램 개발과정. 통합 개발 환경  통합 개발 환경 (IDE: integrated development environment)  에디터 + 컴파일러 + 디버거.
QT/Embedded와 웹 서버 Qt/Embedded 개요 Qt/Embedded 개발 환경 구축
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
* 07/16/96 처음으로 배우는 C 프로그래밍 제1부 기초 제1장 시작하기 *.
Implement of Input and Interaction
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
OpenGL Programming (III) 1. Drawing in 3D 2. Manipulating 3D Space
GTK 프로그래밍 ( 1 ) SNSLAB 발표 : 문동규.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
Power C++ 제6장 포인터와 문자열.
2016 ITA 1월 강의 C Programming -4일차- 포인터배열 및 이중포인터 정대진 ( )
C++ Espresso 제1장 기초 사항.
OpenGL 실습 1주차.
제3장 C 프로그래밍 환경.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
Lab 3 Guide: 교재 4장 대화상자 예제. - 프로파일 입력 ( 쪽)
제 8 장  파서 생성기 YACC 사용하기.
JDBC 프로그래밍 이수지 이동주 1.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
Department of Computer Engineering
C++ Espresso 제9장 다형성.
제9장 C 프로그래밍 환경 창병모
C언어: 배열 (Arrays).
배열, 포인터, 참조 배열은 같은 형을 가지는 변수들의 묶음이다..
6장 비연결형 지향 프로토콜 Database Lab 강 우 석.
Part 11 문자열 ©우균, 창병모 ©우균, 창병모.
Department of Computer Engineering
25장. 메모리 관리와 동적 할당.
GUI Programming - Part 2 ( GUI for Python - wxPython )
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
누구나 즐기는 C언어 콘서트 제2장 기초 사항.
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
ASP.NET Mobile Controls
스택(Stack) 김진수
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
모듈 초기화 module_init(hello_init); module_exit(hello_exit);
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Chapter 3 클래스. 최호성.
adopted from KNK C Programming : A Modern Approach
Computer Graphics OpenGL 설치 및 설정
OpenCV 설치 및 구성 OpenCV
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
CGI (Common Gateway Interface)
' Strategic Alliance Partner with '
가상함수와 추상 클래스.
Chapter 1 C와는 다른 C++. 최호성.
19. 함수 포인터와 void 포인터.
CGI (Common Gateway Interface)
쉽게 풀어쓴 C언어 Express 제2장 프로그램 작성 과정 C Express.
[INA470] Java Programming Youn-Hee Han
Linux/UNIX Programming APUE (Thread Programming)
컴퓨터공학실습(I) 3주 인공지능연구실.
자바 5.0 프로그래밍.
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
Department of Computer Engineering
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발 과정 C Express.
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
자바 5.0 프로그래밍.
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
argc, argv 의 사용방법 #include <stdio.h>
C.
Presentation transcript:

GTK+ 프로그래밍 (2) SNSLAB 발표 : 문동규

GTK+ Programming 기본적 GTK+ 프로그램의 7 단계 환경 초기화 위젯 생성과 속성 설정 콜백 루틴 등록 인스턴트 계층 정의 위젯을 보임 시그널 이벤트 처리 종료

void gtk_init(int *argc_addr,char ***argv_addr) 환경 초기화 void gtk_init(int *argc_addr,char ***argv_addr) argc_addr : 명령행의 항목 개수를 가지는 argc주소 argv_addr : 명령행의 항목값을 가지는 argv 주소 /* 예제 */ #include <gtk/gtk.h> Int main(int argc, char *argv[]) { /*환경을 초기화 한다 */ gtk_init(&argc, &argv); /* ….. */ }

환경초기화 initializes the library for use sets up default signal handlers checks the arguments --gtk-module --g-fatal-warnings --gtk-debug --gtk-no-debug --gdk-debug --gdk-no-debug --display --sync --name --class

윈도우 widget 예제 #include <gtk/gtk.h> int main( int argc, char *argv[] ) { GtkWidget *window; gtk_init (&argc, &argv); /*위젯을 생성한다. */ window= gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show (window); /* 위젯을 보임 */ gtk_main (); return 0; }

초기화, 위젯 생성 int main( int argc, char *argv[] ) { /* GtkWidget is the storage type for widgets */ GtkWidget *window; GtkWidget *button; /* This is called in all GTK applications. Arguments are parsed * from the command line and are returned to the application. */ gtk_init (&argc, &argv); /* create a new window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

속성 설정 & 콜백 루틴 등록 button = gtk_button_new_with_label ("Hello World"); /* 속성 설정 */ gtk_container_set_border_width (GTK_CONTAINER (window), 10); button = gtk_button_new_with_label ("Hello World"); /* Callback routine 등록 */ g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (hello), NULL); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (window));

GtkButton 시그널 클래스 트리

콜백 루틴 / * Hello World 출력 */ static void hello( GtkWidget *widget, gpointer data ) { g_print ("Hello World\n"); } /* delete_event */ static gboolean delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) g_print ("delete event occurred\n"); return TRUE; /* destroy */ static void destroy( GtkWidget *widget, gtk_main_quit ();

인스턴트 계층 & 위젯 /* 인스턴트 계층을 정의 */ gtk_container_add (GTK_CONTAINER (window), button); /* 위젯을 보이게 한다 */ gtk_widget_show (button); gtk_widget_show (window);

시그널과 이벤트 처리 시그널 /* 루프를 처리 */ gtk_main (); return 0; Gtk_main() 시그널이 처리되기를 기다린다. 제어권이 Gtk_main()으로 돌아간다. 시그널 핸들러를 호출한다. 시그널 핸들러 /* 루프를 처리 */ gtk_main (); return 0; 시그널 핸들러 종료

예제 실행화면

YOPY Navigator의 구성도 Main.c 프로그램 실행 Callback.c Interface.c Widget 호출 제어신호 연결 제어권을 gtk_main()으로 넘김 Callback.c Interface.c 이벤트 처리 시그널 신호 전달

YOPY Navigator window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_object_set_data (GTK_OBJECT (window1), "window1", window1); gtk_window_set_title (GTK_WINDOW (window1), "SNS-Client"); gtk_window_set_default_size (GTK_WINDOW (window1), 240, 270); gtk_window_set_policy (GTK_WINDOW (window1), TRUE, TRUE, TRUE);

YOPY Navigator 클릭

YOPY Navigator Clist Scroll