(초보) gtk 작성팁

#1 g_signal_connect 함수 인자 넘겨주기

#include<gtk/gtk.h>

struct testing
{
    int a;
    char b;
};
.......
int delete_event(GtkWidget *widget,struct testing *data)
{
        data->a=3;
       printf("%d\n",data->a);
        return (FALSE);
}

int main(int argc,char *argv[])
{
   struct testing abc;
   ..........
   g_signal_connect(GTK_OBJECT (window), "delete_event",GTK_SIGNAL_FUNC (delete_event),&abc);
   ..........
}

연걸함수쓸때..(g_signal_connect) 인자를 넘겨주는 부분이 한곳(제일 마지막 인자) 밖에 없어서
어쩔수 없이 전역 변수를 사용해서 하는 수밖에 없었는데.. 그놈 포럼에서 찾아보니까 해결방법 이 있었다

"구조체를 넘겨주라"...라는것 ... 그래서 위에처럼 하니까 간단하게 해결되었다.
(사실 이방법말고 딴 방법을 찾을려고도 했지만...)

#2 윈도우 종료 시키기

사실 이거하기전에 윈도우를 종료 시키는 함수가 있긴 했다
gtk_main_quit();
바로 이함수,,,

그런데 문제는 이함수를 자식윈도우(?)에서 Call하면은 제대로 작동을 하지 않는다는것이었다
(첫번째 클릭때에서는 명령어 무시 2번 클릭하면 프로그램 자체가 종료)
그래서 아래의 방법을 사용하기로했다(이거 찾는다고 꽤나 고생)

void closeWin(GtkWidget *window,GtkWidget *data)
{
  gtk_widget_hide_all(data);
}

이함수를 쓰니깐 잘 작동을 한다.. 헌데.. 뭔가 찜찜하다랄까...
hide라서.. remove나 quit같은게 아니라서 말이다
(어감이 좀.... 말끔하게 없어진다는 게 아니라서 말이죠)

이것말고 새로운 방법들이 있는지도 찾아봐야겠습니다....

.... 헉... 이걸로 하면 인제 부모윈도우가 꺼져도  프로그램이 종료가 안되는...
이 함수도 안되겠군요.;;

라고 해서... kldp+튜토리얼의 힘으로 대충 알아냈습니다..
void closeApp(GtkWidget *window,gpointer *data)
{
    gtk_main_quit();
}

void errorMsg(const char *errMsg,GtkWidget *window)
{
   GtkWidget *dialog;

dialog=gtk_message_dialog_new_with_markup(GTK_WINDOW(window),
GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,errMsg);

g_signal_connect (GTK_WINDOW(dialog),"response",GTK_SIGNAL_FUNC(gtk_widget_destroy),
GTK_OBJECT(dialog));

 
gtk_widget_show_all(dialog);

}

Ps:
gtk를 사용하여 프로그램 만들기...
그다지 어렵지 않은거 같군요.. 제가 대총하는거 보니..
아주 직관적으로 이루워져 있어서.. 함수 이름만 보고 확실히 무언 기능을
하는가 알수 있습니다 하지만 그 단점으로는 너무 함수명이 길어지고 언더바를 너무
써서 새끼손가락에 무리? 가 간다는거 정도...

할만 합니다....(취소) 하지만 너무 복잡하네요..우아아악~

자...여러분도... 한번 간단한 프로그램을 작성해보는것은 어떻습니까?

GTK+ Reference Manual(ENG) => http://developer.gnome.org/doc/API/2.0/gtk/index.html
GTK+ Tutorial(KOR)   =>      http://wiki.kldp.org/KoreanDoc//html/GtkTutorial/GtkTutorial.html#toc25

'Programming > GTK+' 카테고리의 다른 글

vte를 이용한 간단한 터미널  (2) 2007.01.14
libglade 컴파일법  (1) 2006.12.14
TODAY.... 삽질 DAY  (6) 2006.08.09
(초보) gtk 작성팁  (10) 2006.08.04
GTK_TEXT 에러..해결책  (4) 2006.07.30
Glade! 리눅스 GUI 프로그래밍 툴  (0) 2006.07.18
Trackback 0 Comment 10
  1. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2006.08.05 22:54 address edit & del reply

    흠.....어여 GUI플밍으로 들어가고 싶다는 ㅡㅜ
    아직도 C..... 후우....

    • Lowid 2006.08.06 12:43 address edit & del

      그냥 gui하면서 c복습 하시면 되요
      저처럼..
      gtk는 c를 기반? 으로 해서 gui 공부겸 c 공부도 되니까요

  2. Favicon of http://blog.naver.com BlogIcon Faust2nd 2006.08.06 01:39 address edit & del reply

    gtk 까지..

    • Lowid 2006.08.06 12:44 address edit & del

      맨날 콘솔만 가지고 놀기는 재미 없어서
      한번 건들여 봤어요..
      gtk하면 윈도우플그램으로도 재구성 하기 쉽다길래요

  3. Favicon of http://blog.naver.com BlogIcon Faust2nd 2006.08.06 13:54 address edit & del reply

    그런데 qt는 언제하나요? ;)

    • Lowid 2006.08.06 21:45 address edit & del

      C++ 을 아직 모르니까 패스~~ ^^;;
      사실 gtk선택한 이유도 c만 알아서 이거 한거랍니다 ;)

  4. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2006.08.08 19:02 address edit & del reply

    훗...저도 GTK하고 싶어요~ 싶어요~ 싶어~~~~~~~~요~

    • Lowid 2006.08.09 00:29 address edit & del

      그럼 하시면 되잖아요..
      바쁘신가...

  5. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2006.08.09 21:49 address edit & del reply

    지금 하는 C와 C#하는것도 벅차서요 ㅠ.ㅠ
    아 어서어서 공부해서 GUI로 넘어가야지 검은 화면에 텍스트 출력하는것도 이젠 지겨버요 ~_~

    • Lowid 2006.08.09 22:46 address edit & del

      GUI는 넘넘 복잡해요 ㅡㅜ,,
      온리 텍스트 모드로 타이핑해서겠지만요..
      신경쓸께 너무 많네요..
      스크롤바,엔트리박스,택스트박스.. 속성설정하구
      사용자 뭐시기 설정하구~.. 제대로 만들려면
      크게 어렵진 않습니다만...너무 복잡하네요..

prev 1 ··· 260 261 262 263 264 265 266 267 268 ··· 342 next