GTK의 GtkWidget *window를 Xlib의 Window *window로 변환하는 법 없나요?
글쓴이: lobin2 / 작성시간: 수, 2007/06/27 - 11:30오전
리눅스 X-Window프로그래밍을 접하는 초보입니다.
자료를 구할데가 없는데... KLDP에서 많은 도움 얻어 갑니다. ^^
Xlib를 써서 프로그램을 구현하다가, GTK를 써서 프로그램을 짜는게 더 효율적이라 생각되어서 지금까지 Xlib로 개발했던 프로그램을
포팅하려고 합니다....
GtkWidget *window 변수를 Xlib의 Window *window로 변환을 해야 되는데, 방법을 찾지 못하겠네요.
고수님의 답변 부탁드립니다.
Forums:
GdkWindow에서 접근하면 됩니다.
GtkWidget의 window 멤버가 GdkWindow이고, GdkWindow에서 Window를 반환하는 함수는 grep ^Window *로 찾아보면 gdkx.h에 하나가 있습니다. 이 파일을 열어보면 멤버에 접근하는 몇 가지 매크로를 볼 수 있는데, 그 중에 찾는 게 있을 겁니다.
다만 (제가 기억하기로) GtkWindow에서 얻어낸 Window로 작업하는 건 gtk가 보호해주지 않기 때문에 침범당하면 다시 그려야 합니다.
아무리 찾아도 안보이네요...
이리 저리 찾으려고 노력해 봐도 찾지를 못하겠네요..
기억 나시면 작은 힌트라도 부탁드립니다. ^^;
GDK_WINDOW_XID(window->window
GDK_WINDOW_XID(window->window)
----
익명이나 오래전 글에 리플은 무조건 -1
그 역순은 어떻게 되나요..
말씀해 주신대로 GtkWidget의 멤버변수인 GdkWindow* window를 GDK_WINDOW_XID를 사용해서 Window*형으로 변환이 되었습니다.
그 역순인 Window *window변수를 GtkWindow와 연결해서 출력 시킬 수 있는 방법이 없을까요?
MDI문제로 Xlib와 Gtk를 통일하지 못하고, 베이스가 Xlib로 짜여진 프로그램에서 Gtk에서 생성된 GtkMozEmbed의 창을 연결하려니... 문제가 많네요..
이 문제로 2주째 고민중인데... 아직 답을 못찾고 있습니다.
Xlib의 Window* 형으로 미리 생성해 둔 window를 GtkWindow로 변환하는 법을 알고 싶습니다.
gdk_window_foreigner_new로 생성을 하면 GdkWindow형이 리턴되는데, GtkMozEmbed에서 GtkWidget형태로 컨트롤 하는데, GdkWindow형으로 GtkWidget으로 변환이 안되네요....
답답하네요... ㅠ.ㅠ
이건 어떤가요?
gtkwidget.h에서 GdkWindow로 찾으면 나오는 함수 중 가장 그럴 듯한 게 void gtk_widget_set_parent_window(GtkWidget *widget, GdkWindow *parent_window); 입니다. 이걸로 구글링을 해보니 아래 주소가 나오네요. 모질라 코드도 보이고 하니 이런 걸 찾으시는 거 같습니다.
http://www.koders.com/c/fid9A89A2F79296946AE6279261E1E6F087FA0BF0FE.asp
안 된다고 합니다.
http://mail.gnome.org/archives/gtk-app-devel-list/2005-May/msg00232.html
GtkWidget은 스스로 GdkWindow를 만드는 거지 주어진 걸 가공해서 쓰는 게 아니라고 합니다.
작업하시는 xlib 환경이 어떤 툴킷인지 모르겠는데, 저 메일에 있는 것처럼 XEMBED 구현체를 통하셔야 하겠습니다.
댓글 달기