亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
用glade在對(duì)話框做了個(gè)繪圖區(qū)后,畫線時(shí)提示出錯(cuò)
[打印本頁(yè)]
作者:
hong106525654
時(shí)間:
2006-12-08 15:33
標(biāo)題:
用glade在對(duì)話框做了個(gè)繪圖區(qū)后,畫線時(shí)提示出錯(cuò)
代碼:
gdk_draw_line((GtkWidget *) lookup_widget (hisdialog, "hispic"), ((GtkWidget *) lookup_widget (hisdialog, "hispic"))->style->black_gc,0,0,10,10);
提示 gdk_draw_line: assertion `gc != NULL' failed
我知道是第一個(gè)或是第二個(gè)參數(shù)錯(cuò)誤 但不知道怎么改
作者:
whyglinux
時(shí)間:
2006-12-08 23:58
要切實(shí)區(qū)分和了解 GtkWindow 和 GdkWindow。
gdk_draw_line() 函數(shù)的第一個(gè)參數(shù)類型是 GdkDrawable *,它可以接受一個(gè) GdkWindow* 或 GdkPixmap*。
對(duì)于 GtkWindow 結(jié)構(gòu),它里面有一個(gè)叫 window 的成員指向 GtkWidget 包含的 GdkWindow。如果 hispic 是一個(gè)指向 GtkWidget 對(duì)象的指針,那么它的 GdkWindow 可以用 hispic->window 表示。
希望能明白應(yīng)該怎樣修改上面函數(shù)的第一個(gè)參數(shù)了。
作者:
hong106525654
時(shí)間:
2006-12-11 08:40
改成這樣以后還是不行
gdk_draw_line((GtkWidget *) lookup_widget (hisdialog,"hispic")->window,
((GtkWidget *) lookup_widget (hisdialog, "hispic"))->style-> black_gc,0,0,10,10);
錯(cuò)誤信息:
gdk_draw_line: assertion `drawable != NULL' failed
作者:
whyglinux
時(shí)間:
2006-12-12 00:08
在劃線的時(shí)候,hisdialog 是否已經(jīng)被顯示出來了?
作者:
hong106525654
時(shí)間:
2006-12-12 08:14
有對(duì)話框 但沒線啊
作者:
whyglinux
時(shí)間:
2006-12-12 12:53
在用 gtk_widget_show() 來顯示 hisdialog 之前,hisdialog->window 為 NULL;顯示之后,hisdialog->window 才指向有效的 GdkWindow 對(duì)象。因此,在顯示 hisdialog 之后才能進(jìn)行畫線操作,之前則不行。這應(yīng)該就是你上面錯(cuò)誤的原因吧。
作者:
hong106525654
時(shí)間:
2006-12-12 16:35
不是 不管在前顯示還是在后顯示都不行
作者:
whyglinux
時(shí)間:
2006-12-12 17:39
名字為 "hispic" 的 widget 具體是什么類型?是否是一個(gè) TOPLEVEL 的 GtkWindow?
作者:
hong106525654
時(shí)間:
2006-12-12 18:06
hispic是用glade建立的一塊繪圖區(qū)
作者:
whyglinux
時(shí)間:
2006-12-12 20:22
畫線操作是在什么地方進(jìn)行的?是在 main() 函數(shù)中的 gtk_main() 被調(diào)用之前進(jìn)行的(如果是這樣,即使畫了線也看不見)?還是在某一事件處理處理函數(shù)中進(jìn)行的(一般不會(huì)有什么問題)?
作者:
hong106525654
時(shí)間:
2006-12-12 20:33
是這樣做的
我點(diǎn)擊菜單后 彈出一個(gè)對(duì)話框 并在對(duì)話框中畫線
作者:
whyglinux
時(shí)間:
2006-12-12 21:13
還是不清楚是在什么時(shí)候畫的線。是在對(duì)話框的創(chuàng)建過程中還是某一事件處理函數(shù)中進(jìn)行的?
如果方便,還是把代碼的主要部分貼出來吧。
作者:
hong106525654
時(shí)間:
2006-12-13 08:43
一個(gè)菜單的響應(yīng)事件
if(hisdialog==NULL)
{
hisdialog=create_dialog2();
}
gtk_widget_show(hisdialog);
gdk_draw_line((GtkWidget *) lookup_widget (hisdialog,"hispic")->window,
((GtkWidget *) lookup_widget (hisdialog, "hispic"))->style-> black_gc,0,0,10,10);
作者:
whyglinux
時(shí)間:
2006-12-13 10:29
在 gtk_widget_show() 之后畫線可以保證不會(huì)出現(xiàn) gdk_draw_line: assertion `drawable != NULL' failed 這樣的錯(cuò)誤了,但是實(shí)際上 gdk_draw_line() 仍然是在 hisdialog 真正得到顯示出來之前調(diào)用的(因?yàn)橹挥性谶@段程序執(zhí)行完畢之后 hisdialog 以及它的子 widget 才能實(shí)際顯示出來),而第一次顯示的 widget 總要重畫自己,所以以前用 gdk_draw_line() 畫的線就被看不見了。
因此,其中的關(guān)鍵就是:應(yīng)該等到 widget 顯示出來之后再進(jìn)行 GDK 的描繪操作。在程序的形式上,一般gtk_widget_show() 和 gdk_draw_line() 應(yīng)該分別位于不同的事件處理函數(shù)中(比如可以把 gdk_draw_line() 放到 繪圖區(qū)的 expose_event 的處理函數(shù)中)。
作者:
hong106525654
時(shí)間:
2006-12-13 13:18
謝謝版主了 請(qǐng)問版主是怎么學(xué)GTK的 有沒有什么資料推薦一下
作者:
whyglinux
時(shí)間:
2006-12-13 21:12
GTK 的主頁(yè)(
http://www.gtk.org/
)上列舉的資料還是比較豐富的。在 Document 一欄中除了常用的 Reference 之外,還有 FAQ、Tutorials、Papers 等。另外,Other document... 也不容錯(cuò)過。
在源碼軟件包中也包括了很多示例程序,可學(xué)習(xí)使用。
歡迎光臨 Chinaunix (http://72891.cn/)
Powered by Discuz! X3.2