GNOME平台GUI编程介绍
最初学习Linux编程,我只是想简单在Linux模仿putclub上提供的CMRepeater,在Linux上写一个类似的版本,我取了个名字叫MNSRepisto:)
所以我装了个ubuntu desktop版本,这是目前比较流行的用户友好的Linux分发版
现在我关注的是首先要有一个好的IDE,我安装了codeblock,和Anjuta两个环境,比较了一下,也不知道哪个更适合我
但我用的多的还是codeblock,毕竟这是跨平台的,其工程很容易移植到windows上。
要写这个MNSRepisto,不外乎界面和audio、video的操作两部分
界面比较容易构建,gtk+或者wxWidget或者gtkmm(gtk+是用c语言编程,而gtkmm用c++进行了wrapper)
我还是选择gtk+,毕竟这个应用,界面也不是太复杂;直接透过代码构建菜单等用户界面也能gtk+编程有更深刻的认识,还有程序中多媒体编程框架我想采用的gstreamer,对C++的wrapper还不是太完整,还是直接用C编程吧!
我安装的linux,默认是gnome桌面环境,那就在gnome下面开发吧。gnome提供良好的图形应用开发环境以及其他软件应用
它的核心技术?
我现在比较关注的还是图形框架,它提供一大堆库来构建图形界面。
最早是知道wxWidget这跨平台的GUI框架,在Linux上,基于GTK+
后来又碰到wxGTK,GTKMM等等
这些概念一开始并没有搞清楚,只是为了尽快进行GNOME上写一个应用程序
其实看看下面的图,对各种图形库的关系会有更直观的印象。

GTK+是GNOME上构建用户界面最基本的库,包括各种控件
Libglade提供了透过XML文件描述构建用户界面的方法
Pango核心文本和字体处理库
GDK由GTK+使用,较底层的库,负责图形和输入装置,与系统操作。需要较底层操作时,用这个库
Cairo 2D图形库 第一个最简单的程序,只是创建一个窗口:
#include
int main( int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
在linux平台上:
编译:gcc -o simple simple.c `pkg-config --libs --cflags gtk+-2.0`
【在window上也可以利用codeblock生成一个gtk项目
或者首先运行pkg-config --libs --cflags gtk+-2.0输出编译链接参数,接着自己写个批处理或者makefile文件,导入这些参数,进行编译。因为`pkg-config --libs --cflags gtk+-2.0`这种形式在linux上是作为命令执行,接着把结果作为参数传给前面命令行的命令,而在window上无法这样执行?】
对于MNSRepisto应用,我用codeblock的gtk项目模板建立应用
建立menu等界面,为了简化开发,我并没有把界面搞的和CMRepeat一摸一样,基本上保证鼠标和菜单操作功能一摸一样!
加入对gstreamer的支持:
打开build options对话框,在compiler settings一栏,点击"other options",添加:`pkg-config --cflags gstreamer-0.10`;在linker settings一栏,点击"other linker options",添加:`pkg-config --libs gstreamer-0.10`。我系统里gstreamer版本最新的是0.10
接着就可以慢慢实现这个MNSRepisto,接下来我要对event loop了解一下。对于audio播放、audio属性操作与界面的交互?这我还不太清楚!!在上面的图中,glib库是个很特别的库,要好好了解下
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
