1 |
<tt><a target="_blank" class="con_link" name="line1">01:</a> <b><font color="#008080">#include</font></b> <font color="#ff0000"><gtk/gtk.h></font><br><a target="_blank" class="con_link" name="line2">02:</a><br><a target="_blank" class="con_link" name="line3">03:</a> <font color="#0000ff">static</font> <font color="#0000ff">void</font> <font color="#9a1900">callback</font><font color="#000000">(</font> GtkWidget <font color="#000000">*</font>widget<font color="#000000">,</font> gpointer data <font color="#000000">)</font><br><a target="_blank" class="con_link" name="line4">04:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line5">05:</a> <font color="#9a1900">g_print </font><font color="#000000">(</font><font color="#ff0000">"Hello again - %s was pressed\n"</font><font color="#000000">,</font> <font color="#000000">(</font>gchar <font color="#000000">*</font><font color="#000000">)</font> data<font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900">data 를 화면에 뿌려준다</font><br><a target="_blank" class="con_link" name="line6">06:</a> <font color="#000000">}</font><br><a target="_blank" class="con_link" name="line7">07:</a><br><a target="_blank" class="con_link" name="line8">08:</a> <font color="#0000ff">static</font> gboolean <font color="#9a1900">delete_event</font><font color="#000000">(</font> GtkWidget <font color="#000000">*</font>widget<font color="#000000">,</font> GdkEvent <font color="#000000">*</font>event<font color="#000000">,</font> gpointer data <font color="#000000">)</font><br><a target="_blank" class="con_link" name="line9">09:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line10">10:</a> <font color="#9a1900">gtk_main_quit </font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> GTK 메인루프를 종료시킨다 </font><br><a target="_blank" class="con_link" name="line11">11:</a> <font color="#0000ff">return</font> FALSE<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line12">12:</a> <font color="#000000">}</font><br><a target="_blank" class="con_link" name="line13">13:</a><br><a target="_blank" class="con_link" name="line14">14:</a> <font color="#0000ff">int</font> <font color="#9a1900">main</font><font color="#000000">(</font><font color="#0000ff">int</font> argc<font color="#000000">,</font> <font color="#0000ff">char</font> <font color="#000000">*</font>argv<font color="#000000">[</font><font color="#000000">]</font><font color="#000000">)</font><br><a target="_blank" class="con_link" name="line15">15:</a> <font color="#000000">{</font><br><a target="_blank" class="con_link" name="line16">16:</a> GtkWidget <font color="#000000">*</font>window<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line17">17:</a> GtkWidget <font color="#000000">*</font>button<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line18">18:</a> GtkWidget <font color="#000000">*</font>box1<font color="#000000">;</font><br><a target="_blank" class="con_link" name="line19">19:</a><br><a target="_blank" class="con_link" name="line20">20:</a> <font color="#9a1900">gtk_init </font><font color="#000000">(</font><font color="#000000">&</font>argc<font color="#000000">,</font> <font color="#000000">&</font>argv<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line21">21:</a><br><a target="_blank" class="con_link" name="line22">22:</a> window <font color="#000000">=</font> <font color="#9a1900">gtk_window_new </font><font color="#000000">(</font>GTK_WINDOW_TOPLEVEL<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line23">23:</a><br><a target="_blank" class="con_link" name="line24">24:</a> <font color="#009900">//</font><font color="#009900"> window에 타이틀 지정</font><br><a target="_blank" class="con_link" name="line25">25:</a> <font color="#9a1900">gtk_window_set_title </font><font color="#000000">(</font><font color="#9a1900">GTK_WINDOW </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"Hello Buttons!"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line26">26:</a><br><a target="_blank" class="con_link" name="line27">27:</a> <font color="#009900">//</font><font color="#009900"> 종료 이벤트 처리</font><br><a target="_blank" class="con_link" name="line28">28:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"delete_event"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>delete_event<font color="#000000">)</font><font color="#000000">,</font> NULL<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line29">29:</a> <br><a target="_blank" class="con_link" name="line30">30:</a> <font color="#009900">//</font><font color="#009900"> 경계선 여백 지정</font><br><a target="_blank" class="con_link" name="line31">31:</a> <font color="#9a1900">gtk_container_set_border_width </font><font color="#000000">(</font><font color="#9a1900">GTK_CONTAINER </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> <font color="#993399">10</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line32">32:</a><br><a target="_blank" class="con_link" name="line33">33:</a> <font color="#009900">//</font><font color="#009900"> 박스 생성 </font><br><a target="_blank" class="con_link" name="line34">34:</a> box1 <font color="#000000">=</font> <font color="#9a1900">gtk_hbox_new </font><font color="#000000">(</font>FALSE<font color="#000000">,</font> <font color="#993399">0</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line35">35:</a><br><a target="_blank" class="con_link" name="line36">36:</a> <font color="#009900">//</font><font color="#009900"> 박스를 윈도우에 넣는다</font><br><a target="_blank" class="con_link" name="line37">37:</a> <font color="#9a1900">gtk_container_add </font><font color="#000000">(</font><font color="#9a1900">GTK_CONTAINER </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">,</font> box1<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line38">38:</a><br><a target="_blank" class="con_link" name="line39">39:</a> <font color="#009900">//</font><font color="#009900"> 라벨을 가지고 버튼을 만든다</font><br><a target="_blank" class="con_link" name="line40">40:</a> button <font color="#000000">=</font> <font color="#9a1900">gtk_button_new_with_label </font><font color="#000000">(</font><font color="#ff0000">"Button 1"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line41">41:</a><br><a target="_blank" class="con_link" name="line42">42:</a> <font color="#009900">//</font><font color="#009900"> 버튼1이 클릭되면 "button 1"이라는 값을 전달하며 callback 함수를 호출하게 한다</font><br><a target="_blank" class="con_link" name="line43">43:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"clicked"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>callback<font color="#000000">)</font><font color="#000000">,</font> <font color="#000000">(</font>gpointer<font color="#000000">)</font> <font color="#ff0000">"button 1"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line44">44:</a><br><a target="_blank" class="con_link" name="line45">45:</a> <font color="#009900">//</font><font color="#009900"> 버튼1을 박스에 묶는다</font><br><a target="_blank" class="con_link" name="line46">46:</a> <font color="#9a1900">gtk_box_pack_start </font><font color="#000000">(</font><font color="#9a1900">GTK_BOX</font><font color="#000000">(</font>box1<font color="#000000">)</font><font color="#000000">,</font> button<font color="#000000">,</font> TRUE<font color="#000000">,</font> TRUE<font color="#000000">,</font> <font color="#993399">0</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line47">47:</a><br><a target="_blank" class="con_link" name="line48">48:</a> <font color="#009900">//</font><font color="#009900"> 버튼1을 보여준다</font><br><a target="_blank" class="con_link" name="line49">49:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line50">50:</a><br><a target="_blank" class="con_link" name="line51">51:</a> <font color="#009900">//</font><font color="#009900"> 버튼2를 만든다 (재활용)</font><br><a target="_blank" class="con_link" name="line52">52:</a> button <font color="#000000">=</font> <font color="#9a1900">gtk_button_new_with_label </font><font color="#000000">(</font><font color="#ff0000">"Button 2"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line53">53:</a><br><a target="_blank" class="con_link" name="line54">54:</a> <font color="#009900">//</font><font color="#009900"> 역시 버튼2가 클릭되면 "button 2" 를가지고 callback 함수를 호출한다</font><br><a target="_blank" class="con_link" name="line55">55:</a> <font color="#9a1900">g_signal_connect </font><font color="#000000">(</font><font color="#9a1900">G_OBJECT </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">,</font> <font color="#ff0000">"clicked"</font><font color="#000000">,</font> <font color="#9a1900">G_CALLBACK </font><font color="#000000">(</font>callback<font color="#000000">)</font><font color="#000000">,</font> <font color="#000000">(</font>gpointer<font color="#000000">)</font> <font color="#ff0000">"button 2"</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line56">56:</a><br><a target="_blank" class="con_link" name="line57">57:</a> <font color="#009900">//</font><font color="#009900"> 버튼2를 박스에 묶는다</font><br><a target="_blank" class="con_link" name="line58">58:</a> <font color="#9a1900">gtk_box_pack_start</font><font color="#000000">(</font><font color="#9a1900">GTK_BOX </font><font color="#000000">(</font>box1<font color="#000000">)</font><font color="#000000">,</font> button<font color="#000000">,</font> TRUE<font color="#000000">,</font> TRUE<font color="#000000">,</font> <font color="#993399">0</font><font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line59">59:</a><br><a target="_blank" class="con_link" name="line60">60:</a> <font color="#009900">//</font><font color="#009900"> 버튼과 박스, 윈도우를 보여준다</font><br><a target="_blank" class="con_link" name="line61">61:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>button<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line62">62:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>box1<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line63">63:</a> <font color="#9a1900">gtk_widget_show </font><font color="#000000">(</font>window<font color="#000000">)</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line64">64:</a><br><a target="_blank" class="con_link" name="line65">65:</a> <font color="#9a1900">gtk_main </font><font color="#000000">(</font><font color="#000000">)</font><font color="#000000">;</font> <font color="#009900">//</font><font color="#009900"> 응답을 기다린다 </font><br><a target="_blank" class="con_link" name="line66">66:</a><br><a target="_blank" class="con_link" name="line67">67:</a> <font color="#0000ff">return</font> <font color="#993399">0</font><font color="#000000">;</font><br><a target="_blank" class="con_link" name="line68">68:</a> <font color="#000000">}</font><br><br></tt> |