跳至主要内容

【转】多迷人Gtkmm啊

前边已经说过用glade设计界面然后动态装载,接下来再来看看怎么改变程序的皮肤(主题)

    首先从http://art.gnome.org/themes/gtk2下载喜欢的主题,从压缩包里提取gtk-2.0文件夹让它和我们下边代码生成的可执行文件放在同一个目录下,这里我下载的的http://art.gnome.org/download/themes/gtk2/1317/GTK2-CillopMidnite.tar.gz

    然后用glade设计界面,命名为main.glade,一会让它和我们下边代码生成的可执行程序放在同一个目录下边

    然后开始写代码如下:

//main.cc
#include <gtkmm.h>
#include <libglademm/xml.h>

int main(int argc, char *argv[])
{
    Gtk::Main kit(argc,argv);
   
    Gtk::Window *pWnd;
  
    gtk_rc_parse("E:\\theme-viewer\\themes\\gtk-2.0\\gtkrc");  

    Glib::RefPtr<Gnome::Glade::Xml> refXml;
    try
    {
        refXml = Gnome::Glade::Xml::create("main.glade");
    }
    catch(const Gnome::Glade::XmlError& ex)
    {
        Gtk::MessageDialog dialog("Load glade file failed!", false,       \
                                  Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK);
        dialog.run();
     
        return 1;
    }
   
    refXml->get_widget("main", pWnd);
    if(pWnd)
    {
        kit.run(*pWnd);
        delete pWnd;
        pWnd = 0;
    }

    return 0;
}
编译链接,然后把这三样东东按我们原订的位置放好,运行,效果如下:

这是我写的一个小程序用来测试主题
http://blogimg.chinaunix.net/blog/upfile2/081223182134.zip
用法:把主题包解压到themes目录下,然后在config.theme中第一行写上主题名字,程序还可以列出可用的主题名

注意:
gtk_rc_parse()只在创建窗口以前使用才有效


我日志虽然我写的是Gtkmm的迷人不过……

评论

此博客中的热门博文

【转】smb协议栈使用示例

/*  * * uncdownload.c  * *  * * Utility for downloading files from SMB shares using libsmbclient  * *  * * Copyright(C) 2006 Sophos Plc, Oxford, England.  * *  * * This program is free software; you can redistribute it and/or modify it under the terms of the  * * GNU General Public License Version 2 as published by the Free Software Foundation.  * *  * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without  * * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  * * See the GNU General Public License for more details.  * *  * * You should have received a copy of the GNU General Public License along with this program; if not,  * * write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  * *  * */ # include < sys / types . h > # include < sys / time . h > # include ...

【转】Ether Types

Ether Types (last updated 2008-09-09) NOTE: Please see [RFC5342] for current information and registration procedures. This registry will be revised soon and will be replaced with up-to-date information. Many of the networks of all classes are Ethernets (10Mb) or Experimental Ethernets (3Mb). These systems use a message "type" field in much the same way the ARPANET uses the "link" field. If you need an Ether Type, contact: IEEE Registration Authority IEEE Standards Department 445 Hoes Lane Piscataway, NJ 08854 Phone +1 732 562 3813 Fax: +1 732 562 1571 Email: <ieee-registration-authority& ieee.org > http://standards.ieee.org/regauth/index.html The following list of EtherTypes is contributed unverified information from various sources. Another list of EtherTypes is maintained by Michael A. Patton and is accessible at: <URL: http://www.cavebear.com/CaveBear/Ethernet/ > <URL: ftp://ftp.cavebear.com/pub/Ethernet-codes > Assign...

【转】tcphdr结构详解

位于:/usr/src/linux/include/linux/tcp.h struct tcphdr { __be16 source; __be16 dest; __be32 seq; __be32 ack_seq; #if defined(__LITTLE_ENDIAN_BITFIELD) __u16   res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1; #elif defined(__BIG_ENDIAN_BITFIELD) __u16   doff:4, res1:4, cwr:1, ece:1, urg:1, ack:1, psh:1, rst:1, syn:1, fin:1; #else #error "Adjust your <asm/byteorder.h> defines"