gtk+에서 사소한 질문.. ㅡ+ㅡ
글쓴이: nekoko / 작성시간: 화, 2005/01/18 - 11:27오후
샘플 코드를 보다가 gtk_statusbar_pop()이라는 함수가 나와서
책을 보니 설명이 부실하길래 gtk.org의 api 레퍼런스를 찾아봤거든요. 두번째 인자가 context id라고 나와있는데 이게 뭔가요??
책이나 gtk.org에도 설명이 없는 것 같아서 함수 본체를 들여다보려고 했는데 gtkstatusbar.h라는 헤더파일엔 헤더만 있고 본체는 어딨는지 모르겠어요 ;_;
gtk_statusbar_pop() 뿐만 아니라 다른 api 함수들의 본체는 어느 디렉토리에 가야 내용을 볼 수 있나요??
Forums:


gtk header XXX.h의 소스는 XXX.c입니다. 당연히 gtks
gtk header XXX.h의 소스는 XXX.c입니다. 당연히 gtkstatusbar.h의 소스는 gtkstatusbar.c이겠죠.
그리고 context id는 gtk_statusbar_get_context_id()로 얻을 수 있습니다.
이 함수로 context id를 얻고. message를 출력하는 것은 push 함수인, gtk_statusbar_push()로 합니다.
devhelp를 설치하면, 편리하게 GTK+ 관련 도움말을 볼 수 있습니다.
http://www.imendio.com/projects/devhelp/ 참고하세요.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
예제:[code:1]#include <gtk/gtk.h>
예제:
#include <gtk/gtk.h> #define DEF_STATUS_CONTEXT "status" gboolean delete_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data); void destroy_cb(GtkWidget *widget, gpointer data); void pressed_cb(GtkWidget *widget, gpointer data); GtkWidget *appwin; GtkWidget *button; GtkWidget *status; guint def_status_context = -1; int main(int argc, char *argv[]) { GtkWidget *box; gtk_init(&argc, &argv); appwin = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_widget_show(appwin); g_signal_connect(G_OBJECT(appwin), "delete-event", G_CALLBACK(delete_event_cb), NULL); g_signal_connect(G_OBJECT(appwin), "destroy", G_CALLBACK(destroy_cb), NULL); box = gtk_vbox_new(0, 0); gtk_widget_show(box); button = gtk_button_new_with_label("Hello, world"); g_signal_connect(G_OBJECT(button), "pressed", G_CALLBACK(pressed_cb), NULL); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(box), button, 1, 1, 0); status = gtk_statusbar_new(); gtk_widget_show(status); def_status_context = gtk_statusbar_get_context_id(GTK_STATUSBAR(status), DEF_STATUS_CONTEXT); gtk_box_pack_end(GTK_BOX(box), status, 0, 1, 0); gtk_container_add(GTK_CONTAINER(appwin), box); gtk_main(); return 0; } gint status_printf(const char *format, ...) { va_list argptr; static gchar buf[LINE_MAX]; gint ret; g_assert(def_status_context != -1); va_start(argptr, format); ret = g_vsnprintf(buf, LINE_MAX, format, argptr); va_end(argptr); gtk_statusbar_pop(GTK_STATUSBAR(status), def_status_context); gtk_statusbar_push(GTK_STATUSBAR(status), def_status_context, buf); return ret; } gboolean delete_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data) { g_print("event: delete-event\n"); return FALSE; } void destroy_cb(GtkWidget *widget, gpointer data) { g_print("event: destroy\n"); return gtk_main_quit(); } void pressed_cb(GtkWidget *widget, gpointer data) { static int count = 0; status_printf("event: pressed %d", ++count); }C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
답변 감사합니다
성실한 답변에 감동했어요 ^^;
말씀하신 툴은 문제가 생겨서 아직 못 깔았지만 유용하게
써보겠습니다 :oops:
"I'm convinced that the only thing that kept me going was that I loved what I did." - Steve Jobs 1955-2011
댓글 달기