讓我們來看一下函式 gtk_signal_connect() 的宣告。
gulong g_signal_connect( gpointer object, const gchar *name, GCallback func, gpointer func_data ); |
注意到傳回值的型別 gulong 了嗎?這是一個識別你的回呼函式的標籤。前面講過,每個信號和每個物件可以有多個回呼函式,並且它們會按設置的順序依次運行。
利用這個標籤,你可以用下面的函式從列表中刪除這個回呼:
void g_signal_handler_disconnect( gpointer object, gulong id ); |
所以,通過傳遞你想在上面刪除處理函式的元件,以及某個 signal_connect 函式傳回的標籤,你就可以中斷一個信號處理函式的連接。
你也可以用 g_signal_handler_block() 和 g_signal_handler_unblock() 這類函式來暫時斷開信號處理函式的連接。
void g_signal_handler_block( gpointer object, gulong id ); |
1 則留言