1 / 12
文档名称:

webkit自带谷歌浏览器实例分析.doc

格式:doc   大小:328KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

webkit自带谷歌浏览器实例分析.doc

上传人:小点 2019/1/25 文件大小:328 KB

下载得到文件列表

webkit自带谷歌浏览器实例分析.doc

文档介绍

文档介绍:Webkit自带谷歌浏览器实例分析(1)先看下这个简单浏览器的图片效果我这个程序源代码是用sourceinsight阅读的,,,sourceinsight怎一个强字了得?!从main函数开始分析:intmain(intargc,char*argv[]){gtk_init(&argc,&argv);/*初始化gtk整个实例,每个gtk中必有的*/if(!g_thread_supported())g_thread_init(NULL);GtkWidget*vbox=gtk_vbox_new(FALSE,0);/*创建一个垂直的box来存放下列部件,创建并添加工具栏(toolbar)、浏览器(browser)、状态栏(statusbar)*/gtk_box_pack_start(GTK_BOX(vbox),create_toolbar(),FALSE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),create_browser(),TRUE,TRUE,0);gtk_box_pack_start(GTK_BOX(vbox),create_statusbar(),FALSE,FALSE,0);main_window=create_window();/*创建主窗口,放置vbox*/gtk_container_add(GTK_CONTAINER(main_window),vbox);/*将vbox放入主窗口*/ /*判断是否输入网址也就是命令行参数,有的话将值给uri,没有的话设为默认*/gchar*uri=(gchar*)(argc>1?argv[1]:"/");webkit_web_view_load_uri(web_view,uri);/*调用webkit库函数加载uri网址*/gtk_widget_grab_focus(GTK_WIDGET(web_view));/抓取web_view上的焦点?*//*现实整个主窗口,也就是浏览器窗口*/gtk_widget_show_all(main_window);gtk_main();return0;}主函数从前到后读下来基本没什么问题,只是对web_view有点困惑,于是找到定义的地方staticWebKitWebView*web_view;/*很显然是一个全局静态变量*/:发现typedefstruct_WebKitWebViewWebKitWebView;struct_WebKitWebView的结构为:struct_WebKitWebView{GtkContainerparent_instance;/*<private>*/WebKitWebViewPrivate*priv;};依然不大懂,继续挖掘WebKitWebViewPrivate:真是有种取之不尽挖之不绝的感觉O(∩_∩)Otypedefstruct_WebKitWebViewPrivateWebKitWebViewPrivate;再往下看终于看到曙光了:struct_WebKitWebViewPrivate{WebCore::Page*corePage;/*这个应该是核心页面吧*/WebKitWebSettings*webSettings;/*页面有关的设置木有细挖,水太深*/WebKitWebInspector*webInspector;/*什么检查员?*/WebKitWebWindowFeatures*webWindowFeatures;/*Window的特性*/WebKitWebFrame*mainFrame;/*web主框架*/WebKitWebBackForwardList*backForwardList;/*保存前进后退的链表*/gintlastPopupXPosition;/*不太懂*/gintlastPopupYPosition;/*依然不太懂*/ 此处也省略很多};WebCore::Page*?是什么东东?真是一波未平一波又起,杯具之情油然而生,究竟何时是尽头,,,?放弃or继续走下去?其实本来想放弃的,但是想想都挖了这么深了,放弃了可惜哇,,,goahead!继续挖:何为命名空间?据《c++primer》传言,一般大型程序或者库文件有很多全局变量,这些变量重名的概率是相当的高,所以就会引起名字冲突,《C++primer》起了个洋气的名字,叫“命名空间污染”,其实就是重名引起冲突而已。为了避免这种污染,就有了命名空间。namespaceWebCore{AccessibilityARIAGrid::AccessibilityARIAGrid(RenderObj