을 방출하고 방출 여기GTK 신호를 생성하고 GTK 신호를 내가 만들려고하고
gtk_signal_emit_by_name(referenceToMyWindow, "child-finished");
을 그리고 것은 처리 내 코드입니다 신호 :
void MyCallback(GtkWidget *w, GdkEvent *e)
{
// handler code here
}
나는 다음과 같은 오류가 코드를 실행하면 :
를GLib-GObject-CRITICAL **: g
_closure_
invoke: assertion `closure->marshal || closure->meta_marshal' failed
나는 그것이 g_signal_new
함수에 마샬를 통과 함께 할 수있는 뭔가가 알고 있지만, 나는 마샬이 무엇인지 모른다, 나는 the documentation을 이해하지 수 있으며, 예를 들면 온라인 극소수입니다. 내 신호를 선언하고 연결하려면 어떻게해야합니까?해야 신호 처리기 의
g_signal_new("child-finished",
G_TYPE_OBJECT, G_SIGNAL_RUN_FIRST,
0, NULL, NULL,
g_cclosure_marshal_VOID__BOXED,
G_TYPE_NONE, 1, GDK_TYPE_EVENT);
매개 변수 : 당신은 유형 검사를 원하는 경우,
g_signal_new("child-finished",
G_TYPE_OBJECT, G_SIGNAL_RUN_FIRST,
0, NULL, NULL,
g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE, 1, G_TYPE_POINTER);
또는 : 코드가 아마해야하므로
는
GBoxed 형식은 형식 검사가 없으며 형식 정보가없는 C 구조체의 래퍼 일뿐입니다. G_TYPE_POINTER와 G_TYPE_BOXED의 실제 차이는 후자의 경우 GdkEvent 구조체의 _copy_가 사용된다는 것입니다. 이벤트가 수정되지 않은 경우에는 차이가 없지만 수정할 필요가있는 경우 G_TYPE_POINTER를 사용하십시오. – ntd