freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式瀏覽器開(kāi)發(fā)畢業(yè)設(shè)計(jì)畢業(yè)論文-閱讀頁(yè)

2025-07-13 13:06本頁(yè)面
  

【正文】 大大簡(jiǎn)化開(kāi)發(fā)工作,避免不必要的重新編譯。makefile 需要按照某種語(yǔ)法進(jìn)行編寫(xiě),其中說(shuō)明了如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,并定義了源文件之間的依賴(lài)關(guān)系。
默認(rèn)情況下,GNU make 工具在當(dāng)前工作目錄中按如下順序搜索 makefile: GNUmakefile,makefile,Makefile。
(2) makefile 基本結(jié)構(gòu)
makefile 中一般包含如下內(nèi)容:* 需要由 make 工具創(chuàng)建的項(xiàng)目,通常是目標(biāo)文件和可執(zhí)行文件。* 創(chuàng)建每個(gè)項(xiàng)目時(shí)需要運(yùn)行的命令。另外,你可能只希望利用 g++ 命令來(lái)生成 目標(biāo)文件。通常,makefile 中定義有 clean 目標(biāo),可用來(lái)清除編譯過(guò)程中的中間文件,例如:
clean:
rm f *.o運(yùn)行 make clean 時(shí),將執(zhí)行 rm f *.o 命令,最終刪除所有編譯過(guò)程中產(chǎn)生的所有中間文件。其中之一就是變量或宏的定義能力。但利用簡(jiǎn)單的變量定義,可避免這種乏味的工作,例如:
CC = gcc
CCFLAGS = D_DEBUG g m486
:
$(CC) c $(CCFLAGS)
在上面的例子中,CC 和 CCFLAGS 就是 make 的變量。在 makefile 中引用變量的值時(shí),只需變量名之前添加 $ 符號(hào)。
f FILE 以指定的 FILE 文件作為 makefile。
i 忽略所有的命令執(zhí)行錯(cuò)誤。
n 只打印要執(zhí)行的命令,但不執(zhí)行這些命令。
s 在執(zhí)行命令時(shí)不顯示命令。
W FILE 假定文件 FILE 已經(jīng)被修改。 一個(gè)簡(jiǎn)單的GTK程序
include gtk/int main( int argc,char *argv[] )
{ GtkWidget *window。argc, amp。
window = gtk_window_new (GTK_WINDOW_TOPLEVEL)。
gtk_main ()。
}
編譯方法:gcc -Wall g o base `gtkconfig cflags libs`該程序是一個(gè)最簡(jiǎn)單的窗口程序。
信號(hào)處理函數(shù):
gint gtk_signal_connect( GtkObject, gchar,GtkSignalFunc, gpointer)。
void gtk_signal_handler_block( GtkObject, guint)。
void gtk_signal_emit( GtkObject, guint, ... )。 第五章 Netbit瀏覽器開(kāi)發(fā)與分析 Netbit 瀏覽器簡(jiǎn)介Netbit Browser 是基于Linux平臺(tái)的瀏覽器,使用了gtk作為gui開(kāi)發(fā)工具。該項(xiàng)目是開(kāi)放源碼項(xiàng)目,由sogo456,網(wǎng)址是:。Netbit Browser在界面上主要承襲了Gzilla的風(fēng)格,在技術(shù)上主要涉及了詞法、語(yǔ)法分析,文檔布局,PIXMAP畫(huà)圖,文件IO操作,簡(jiǎn)單HTTP訪(fǎng)問(wèn)等技術(shù)。 GtkWidget *open_dialog_entry。 GtkWidget *quit_dialog_window。 /* 文件類(lèi)型:html or plain text*/ gint file_type。 控制模塊(1) ,主要的函數(shù)說(shuō)明:void a_Commands_openfile_callback (GtkWidget *widget, gpointer client_data)。打開(kāi)URLvoid a_Commands_close_callback(GtkWidget * widget, gpointer client_data)。退出程序void a_Commands_viewsource_callback (GtkWidget *widget, gpointer client_data)。刷新當(dāng)前網(wǎng)頁(yè)void a_Commands_home_callback (GtkWidget *widget, gpointer client_data)。 顯示幫助(2) ,:是命令對(duì)應(yīng)的與網(wǎng)頁(yè)操作有關(guān)的具體實(shí)施主要的函數(shù)說(shuō)明:void a_Nav_push(BrowserWindow *bw, const char*)。void a_Nav_reload(BrowserWindow *bw)。打開(kāi)起始頁(yè)(內(nèi)置頁(yè)面)詞法分析的原理和算法在前面已有詳述。 創(chuàng)建新的全局結(jié)構(gòu)int Bit_Tokenize(BitTokenContext *global_cx)。 全局詞法分析int Bit_DestroyToken(BitTokenContext *global_cx)。重要的字符處理函數(shù),讀取到指定字符后結(jié)束char *Token_GetAttribute(BitTokenContext *global_cx)。 轉(zhuǎn)義字串的處理int Token_ConsumTag(BitTokenContext *global_cx)。 處理文本void Bit_ShowTokenResult(BitTokenContext *global_cx)。 保存分析結(jié)果(2) 。,主要的函數(shù)說(shuō)明:gint pixmap_new(GtkWidget *widget,int width,int height)。來(lái)新建一個(gè)pixmap。 在expose消息到來(lái)時(shí),即若界面被破壞需重畫(huà)時(shí),使用gdk_draw_pixmap(widgetwindow,widgetstylefg_gc[GTK_WIDGET_STATE(widget)],pixmap,event,event,event,ent, event, event)。gint pixmap_repaint(GtkWidget *widget)。gint Browser_Paint(BrowserWindow *bw)。 文本文件的顯示模塊,char *Plain_handle_tabs(const char *str)將TAB轉(zhuǎn)為空格。指定默認(rèn)字體font=gdk_font_load(adobehelveticamediumrnormal14*****iso88591)。 while(line_sizeSCREEN_WIDTH20 amp。 Buf[i]!=39。) {str[j]=Buf[i]。 j++。 } str[j]=39。 if(Buf[i]==39。)i++。 line_size=x。 }創(chuàng)建PIXMAP pixmap_new(drawing_area,SCREEN_WIDTH,y)。進(jìn)行真實(shí)的畫(huà)圖。輸出到PIXMAP并顯示 HTML文件的顯示模塊這部份是整個(gè)瀏覽器最重要的部份之一,綜合了語(yǔ)法分析與HTML的布局、輸出,其算法的好壞直接關(guān)系到網(wǎng)頁(yè)的顯示效果。 case HTML_TEXT: ………… break。 } //switch pTtokenList=pTtokenListnext。例如:當(dāng)遇到title元素時(shí),就使用gtk函數(shù)來(lái)設(shè)定窗口標(biāo)題為指定標(biāo)題gtk_window_set_title(GTK_WINDOW(bwmain_window),pTtokenListtokenpData)。由于程序結(jié)構(gòu)十分簡(jiǎn)單清晰,大部份元素的處理都簡(jiǎn)單易懂,參考源程序即可,下面主要針對(duì)font和相關(guān)標(biāo)記對(duì)字體的設(shè)置闡述其算法。 you can redistribute it and/or modify it under the terms of the font size=5 color=FF0000GNU General Public License /fontas published by the Free Software Foundation。這種嵌套的約束方式帶來(lái)了HTML元素管理的混亂,也容易產(chǎn)生冗余的HTML代碼,但既然標(biāo)準(zhǔn)是這么定的,也只能想辦法加以解決,固然現(xiàn)在隨著樣式表的廣泛采用,font已面臨壽終正寢,但仍然大量存在,特別在對(duì)字體的顏色的設(shè)置,使用font標(biāo)記很方便。這樣,在出現(xiàn)font或相關(guān)元素的首標(biāo)記時(shí),我們將詞法分析的結(jié)果提取出來(lái),即將其元素屬性提取出來(lái),作為參數(shù)傳遞給html_open_font函數(shù),該函數(shù)將這些屬性進(jìn)行組合,設(shè)置成為當(dāng)前字體屬性,并入棧保存;在出現(xiàn)font或相關(guān)元素的尾標(biāo)記時(shí),出于保險(xiǎn)(因?yàn)榇嬖诮诲e(cuò)包含關(guān)系的元素),首先檢驗(yàn)棧頂元素與正在處理的元素尾標(biāo)記是否匹配(名稱(chēng)相同),如相同則出棧,并將棧內(nèi)下一字體屬性設(shè)為系統(tǒng)的當(dāng)前字體屬性。所使用的棧的結(jié)構(gòu)很簡(jiǎn)單,如下。char color_str[15]。char style_str[15]。此為font_list的類(lèi)型定義,描述了字體屬性的結(jié)構(gòu)font_list font_opening[50]。 定義一個(gè)整型變量,作為棧頂指針如此,一個(gè)簡(jiǎn)單的數(shù)組就發(fā)揮了巨大的作用,配以一點(diǎn)點(diǎn)算法,就帶來(lái)了豐富多彩的界面效果。 you can redistribute it and/or modify it under the terms of the font size=5 color=FF0000GNU General Public License /fontas published by the Free Software Foundation。以下為打開(kāi)文件對(duì)話(huà)框以下為查看HTML源碼對(duì)話(huà)框下面對(duì)比Netbit Browser,看看其它瀏覽器查看此網(wǎng)頁(yè)的效果。對(duì)字號(hào)的支持也不好。IE查看該網(wǎng)頁(yè)的效果,字體不同是由于IE設(shè)置的默認(rèn)字體不同??梢缘贸龅慕Y(jié)論是,Netbit Browser Demo 版已經(jīng)具有了一定的實(shí)用價(jià)值,但要對(duì)其進(jìn)行完善,工作量還很巨大。 Netbit Browser的缺點(diǎn)分析及改進(jìn)辦法基礎(chǔ)的GUI設(shè)計(jì)上存在缺陷Netbit Browser目前的頁(yè)面輸出實(shí)際上還采用了簡(jiǎn)單的畫(huà)圖機(jī)制,無(wú)法在主窗體內(nèi)放置如按鈕、編輯框、單選框等控件,也無(wú)法處理頁(yè)面元素的消息響應(yīng),(Netbit Browser ),而使用GTK作為開(kāi)發(fā)平臺(tái)是完全可以實(shí)現(xiàn)這些要求的,GZILLA就是最好的實(shí)例,它通過(guò)對(duì)現(xiàn)有控件的組合,開(kāi)發(fā)了自己的文檔視圖控件,實(shí)現(xiàn)了上述功能。而Netscape由于考慮到支持多個(gè)GUI平臺(tái),還需要一個(gè)抽象的中間層文檔視圖控件,這個(gè)中間層也在萬(wàn)行以上。下面加以闡述。GTK控件是以流行的控件組件的觀念來(lái)設(shè)計(jì)的。 比起用C++來(lái)說(shuō), 這可以大大改善可移植性及穩(wěn)定性。 所有同一類(lèi)別的控件的一般聲明 (例如所有的按鈕控件)是放在 class structure。 在這個(gè)結(jié)構(gòu)中儲(chǔ)存類(lèi)別信號(hào)的聲明。 例如GtkButton的類(lèi)別的聲明看起來(lái)像這樣: struct _GtkButtonClass{ GtkContainerClass parent_class。 void (* released) (GtkButton *button)。 void (* enter) (GtkButton *button)。}。具體而言,比如我們使用一個(gè)基礎(chǔ)的layout控件來(lái)作為我們自畫(huà)的文檔視圖控件的基礎(chǔ)控件,layout = gtk_layout_new(NULL, NULL)。我們迫切關(guān)心的是那些需要用畫(huà)圖方法來(lái)實(shí)現(xiàn)的頁(yè)面元素,如文字、圖片、表格、直線(xiàn)是如何產(chǎn)生的。實(shí)際上,無(wú)論在什么情況下,我們要作畫(huà)都需要合適的畫(huà)布,要在可以作畫(huà)的控件上才可以施展拳腳,drawing_area正是這樣的控件,如此,我們只要將畫(huà)畫(huà)在drawing_area上,然后再使用gtk_layout_put函數(shù)將drawing_area放置到layout控件上,不就萬(wàn)事大吉了?不錯(cuò),但只對(duì)了一半,原來(lái)drawing_area本身并沒(méi)有實(shí)現(xiàn)自我重畫(huà)的機(jī)制,當(dāng)最小化窗口或打開(kāi)對(duì)話(huà)框時(shí),原有的界面就被破壞,只有進(jìn)行重畫(huà)才能恢復(fù)原貌,重畫(huà)又是怎樣實(shí)現(xiàn)的呢?原來(lái),我們?cè)趯rawing_area放置于layout之前,是做了手腳的,使用以下函數(shù)gtk_object_set_data(GTK_OBJECT(drawing_area), layout, partp)。同時(shí)使用函數(shù)gtk_signal_connect(GTK_OBJECT(drawing_area), expose_event, (GtkSignalFunc)render_line_event, NULL)。render_line_event即是用于重畫(huà)的函數(shù),到了需要重畫(huà)的時(shí)候,該函數(shù)取出封裝給drawing_area的數(shù)據(jù)進(jìn)行重畫(huà)。不要高興太早,超級(jí)鏈接都不可點(diǎn)擊,GIF動(dòng)畫(huà)也不會(huì)動(dòng),界面還是死的,原來(lái)忘了畫(huà)龍點(diǎn)睛,怎么辦?加消息。首先新建一個(gè)消息盒子,event_box = gtk_event_box_new()。若是最后再放上去,效果是同樣的。gtk_container_add(GTK_CONTAINER(event_box),drawing_area)。amp。 gtk_signal_connect(GTK_OBJECT(event_box), leave_notify_event, (GtkSignalFunc)activ
點(diǎn)擊復(fù)制文檔內(nèi)容
語(yǔ)文相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1