• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評(píng)論-173  文章-70  trackbacks-0
            要制作向windows一樣的資源管理器,那么,添加進(jìn)程的部分是不可缺少的,于是,就有那種windows下面的ListBox那種配件了,于是,有了下面的代碼。
            int main(int argc ,char ** argv)
            {
              gtk_init(
            &argc, &argv);

              window 
            = gtk_window_new (GTK_WINDOW_TOPLEVEL);
              gtk_window_set_title (GTK_WINDOW (window), 
            "Linux System Moniter");//標(biāo)題
             
            // gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);//默認(rèn)窗口尺寸大小,有它的話設(shè)置不可變大小就有問題
              gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
              gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
            //窗口不可改變
              gtk_widget_set_usize(GTK_WIDGET (window),400,415);
              g_signal_connect(G_OBJECT(window), 
            "destroy", G_CALLBACK(gtk_main_quit), NULL);  //將窗口關(guān)閉信息與destroy_window關(guān)聯(lián)
              
              main_vbox 
            = gtk_vbox_new (FALSE, 10);         //創(chuàng)建一個(gè)豎直的布局容器
              gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 1);   //設(shè)定這個(gè)容器和周圍的間距
              gtk_container_add (GTK_CONTAINER (window), main_vbox);    //將這個(gè)布局容器添加到整個(gè)視窗的容器中    
              gtk_widget_show (main_vbox);            

              GtkWidget 
            *status_bar = gtk_statusbar_new ();      
              gtk_box_pack_end(GTK_BOX(main_vbox), status_bar, TRUE, TRUE, 
            0);    //將狀態(tài)欄也加入到豎直控件中,end表示是在最底部添加的此控件
              gtk_widget_show (status_bar);


              GtkWidget 
            *notebook = gtk_notebook_new ();
              gtk_box_pack_end(GTK_BOX(main_vbox),notebook,TRUE,TRUE,
            0);    //在頂部添加一個(gè)標(biāo)簽頁,這樣就可以實(shí)現(xiàn)多重標(biāo)簽了
              gtk_widget_show_all (window);    //顯示所有的窗口和界面

             GtkWidget *frame1 = gtk_frame_new ("CPU info");        //創(chuàng)建第一個(gè)簡(jiǎn)單的標(biāo)簽頁
              gtk_container_set_border_width (GTK_CONTAINER (frame1), 10);
              gtk_widget_set_size_request (frame1, 100, 335);
              gtk_widget_show (frame1);
              gtk_notebook_append_page (GTK_NOTEBOOK (notebook), frame1, gtk_label_new("CPU"));
              GtkWidget *scrolled_window=gtk_scrolled_window_new(NULL,NULL);
              gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
                  GTK_POLICY_AUTOMATIC,GTK_POLICY_ALWAYS);
              gtk_container_add (GTK_CONTAINER (frame1), scrolled_window);
                   gtk_widget_show(scrolled_window);
              gchar *cols[6]={"NAME", "PID" , "STATUS", "TIME(S)" , "MEMORY(KB)","PRIORITY"};
              GtkWidget *clist=gtk_clist_new_with_titles(6,cols);
              g_signal_connect(GTK_OBJECT(clist),"select_row",GTK_SIGNAL_FUNC(selection_made),NULL); //此處中的函數(shù)沒有任何作用就設(shè)置未NULL,否則選中的就要發(fā)生對(duì)應(yīng)的變化
              gtk_clist_set_shadow_type(GTK_CLIST(clist),GTK_SHADOW_OUT);
              gtk_clist_set_column_width(GTK_CLIST(clist),0,64);//設(shè)置某個(gè)列和對(duì)應(yīng)的寬度,第一個(gè)數(shù)是列數(shù),第二個(gè)是寬度
              gtk_clist_set_column_width(GTK_CLIST(clist),1,30);
              gtk_clist_set_column_width(GTK_CLIST(clist),2,55);
              gtk_clist_set_column_width(GTK_CLIST(clist),3,64);
              gtk_clist_set_column_width(GTK_CLIST(clist),4,64);
              gtk_clist_set_column_width(GTK_CLIST(clist),5,60);
              gtk_container_add(GTK_CONTAINER(scrolled_window),clist);
              gtk_widget_show(clist);
            …………………………
            }


            此部分的這句代碼g_signal_connect(GTK_OBJECT(clist),"select_row",GTK_SIGNAL_FUNC(selection_made),NULL)
            如果將selection_made函數(shù)的地方置為NULL,那么,程序是可以正常運(yùn)行,不過,最后會(huì)發(fā)生錯(cuò)誤。顯示:
            (mytest:6112): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion `c_handler != NULL' failed
            根據(jù)錯(cuò)誤之處就可以定位到函數(shù)部分。也就是說,回調(diào)函數(shù)處不能賦值為空。

            注意此函數(shù)的作用,就是當(dāng)選擇了某列的時(shí)候,調(diào)用selection_made來做某項(xiàng)修改的,如果不需要,大可不必要添加這部分。當(dāng)然,程序開始編寫沒必要,不過后面會(huì)有需要,所以,這里先列出來!

            切記:不可畫蛇添足,要充分的理解原代碼的意思。
            posted on 2010-03-08 21:06 deercoder 閱讀(1233) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Unix/Linux
            狠狠色丁香久久婷婷综合_中| 亚洲国产精品嫩草影院久久| 精品多毛少妇人妻AV免费久久| 亚洲欧洲中文日韩久久AV乱码| 热99RE久久精品这里都是精品免费| 人妻久久久一区二区三区| 久久精品国产亚洲精品2020| 开心久久婷婷综合中文字幕| 久久夜色精品国产噜噜麻豆| 久久亚洲天堂| 91麻豆精品国产91久久久久久| 久久久SS麻豆欧美国产日韩| 国内精品伊人久久久久网站| 国产精品99久久99久久久| 2021国产精品久久精品| 很黄很污的网站久久mimi色 | 99久久精品费精品国产| 国产精品一区二区久久精品涩爱| 97久久精品午夜一区二区| 久久精品无码一区二区WWW| 久久精品国产精品亜洲毛片| 国产成人精品免费久久久久| 中文字幕久久波多野结衣av| 久久这里都是精品| 香蕉久久影院| 久久91精品综合国产首页| 99久久精品午夜一区二区| 99久久精品免费看国产一区二区三区| 久久天天躁狠狠躁夜夜2020老熟妇 | 久久性生大片免费观看性| 久久福利青草精品资源站| 国产精品久久久天天影视| 东京热TOKYO综合久久精品 | 看全色黄大色大片免费久久久| 国产成人久久精品二区三区| 99久久精品免费观看国产| 精品午夜久久福利大片| 国产精品久久久久久久午夜片| 7国产欧美日韩综合天堂中文久久久久 | 九九久久自然熟的香蕉图片| 久久久久久亚洲Av无码精品专口|