GTK+3开发

GTK+3可以运行在WIN下和LINUX下。

#include <gtk/gtk.h>int main( int argc, char *argv[])
{GtkWidget *window;GtkWidget *fixed;GtkWidget *button;gtk_init(&argc, &argv);window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window), "你好");gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);fixed = gtk_fixed_new();gtk_container_add(GTK_CONTAINER(window), fixed);button = gtk_button_new_with_label("退出");gtk_fixed_put(GTK_FIXED(fixed), button, 50, 50);gtk_widget_set_size_request(button, 80, 35);g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(gtk_main_quit), G_OBJECT(window));g_signal_connect_swapped(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);gtk_widget_show_all(window);gtk_main();return 0;
}

windows下配置gtk+3与codeblocks的开发环境如下:

选择all-in-one bundle下载后安装。

Then add the bin folder to your PATH. Make sure you have no other

versions of GTK+ in PATH. Run:

pkg-config --cflags gtk+-3.0

and verify that it prints out something reasonable. Prepare Pango :

pango-querymodules > c:\gtk\etc\pango\pango.modules

Prepare GDK-Pixbuf :

gdk-pixbuf-query-loaders > c:\gtk\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache

Prepare GTK±IMModules :

gtk-query-immodules-3.0 > c:\gtk\lib\gtk-3.0\3.0.0\immodules.cache

Run:

gtk3-demo

and verify that it works.

J:>pkg-config --libs gtk±3.0 > libs.txt

J:>pkg-config --cflags gtk±3.0 > cflags.txt

Codeblocks 建立empty project

#include <gtk/gtk.h>static void destroy(GtkWidget window,gpointer data){printf("%s",gtk_label_get_text(data));gtk_main_quit();
}
static gboolean delete_event(GtkWindow window,GdkEvent *event,gpointer data){return FALSE;
}int main( int argc, char argv[])
{GtkWidget window;char markup;char str="hello,world";gtk_init(&argc, &argv);window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window), "你好");gtk_container_set_border_width(GTK_CONTAINER(window),10);gtk_window_set_default_size(GTK_WINDOW(window), 130, 150);gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);GtkWidget * label=gtk_label_new("");markup = g_markup_printf_escaped ("<span style=\"italic\">%s</span>",str );gtk_label_set_markup (GTK_LABEL (label), markup);gtk_label_set_selectable(GTK_LABEL(label),TRUE);g_signal_connect(G_OBJECT(window), "destroy",G_CALLBACK(destroy),(gpointer)label);g_signal_connect(G_OBJECT(window), "delete _event",G_CALLBACK(delete_event),NULL);gtk_container_add(GTK_CONTAINER(window),label);gtk_widget_show_all(window);gtk_main();g_free (markup);return 0;
}

在windows下配置远程登录UNIX/LINUX服务器,执行图形程序

在Putty上有X的转发功能,可以将Linux主机的X程序通过SSH通道转发到客户端,交给在本地Windows系统下运行的X Server来管理和显示。 提供X server和SSH服务的软件有很多,可以使用Putty和Xming

 Putty 下载地址:http://www.putty.org/Xming 下载地址:http://xming.softpedia.com/

Xming与putty一起实现Linux X11在本地显示的方法如下:

putty上设置:Connection->SSH->X11->Enable X11 forwarding

然后在本地 Windows 系统上启动一个 Xwindow 服务,如 Xming. 这时就可以远程输入命令启动图形界面的程序了,启动后程序的界面将显示在本地的 Windows 桌面上。

Xming的主页:
http://www.straightrunning.com/XmingNotes/
Xming的SourceForge页面:
http://sourceforge.net/projects/xming/

第一次运行时使用开始菜单里面的XLaunch来启动,产生一个初始的配置文件。对于简单的使用来说,不需要任何特殊的配置,一切使用默认即可。Xming的具体配置和使用可以参考http://www.straightrunning.com/XmingNotes/xmingrc.php

运行PuTTY,在配置界面,选择“Connection-SSh-X11”,选中“Enable X11forwarding”,“X display location”中填上上一步中“Display number”中的数字(此处就是“localhost:0”)。

下面测试一下,编写一段简单的关于GTK+的C代码文件:

dp@dp:~/gtklearn % vim test1.c

#include <gtk/gtk.h>int main (int argc,char *argv[]){GtkWidget *window;gtk_init (&argc,&argv);window = gtk_window_new (GTK_WINDOW_TOPLEVEL);g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);gtk_widget_show (window);gtk_main ();return 0;
}

然后,编译运行

gcc pkg-config --cflags gtk±3.0 -o window-default tset1.c pkg-config --libs gtk±3.0

给窗口加上标题

dp@dp:~/gtklearn % vim test1.c

#include <gtk/gtk.h>
int main (int argc,char *argv[]){GtkWidget *window;gtk_init (&argc,&argv);window = gtk_window_new (GTK_WINDOW_TOPLEVEL);g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);gtk_window_set_title(GTK_WINDOW(window), "hello,world");gtk_widget_show (window);gtk_main ();return 0;
}

~
dp@dp:~/gtklearn % gcc pkg-config --cflags gtk±3.0 -o window-default test1.c pkg-config --libs gtk±3.0
dp@dp:~/gtklearn % ./window-default

Xming-fonts的安装
http://xming-fonts.software.informer.com/download/
双击Xming-fonts-7-4-0-3-setup.exe安装Xming-fonts, 安装路径为默认的C:\Program Files\Xming, 则安装字体之后的字体路径就是C:\Program Files\Xming\fonts.

这是windows客户端的显示

下面是在虚拟上安装的freebsd的显示

启动xorg

startx

然后运行程序

如下图

我们也可以选择xmanger,相对xming来说,更加强大,使用xmanger后,为正常显示中文,需要下载字体文件安装

http://www.netsarang.com/download/font.html

同时在freebsd/linux端指定编码为utf-8格式,最后需要调整xshell的参数

下面是上述程序在xmanger的运行画面

dp@dp:~/gtklearn % vim test1.c
#include <gtk/gtk.h>
int main (int argc,char *argv[]){GtkWidget *window;gtk_init (&argc,&argv);window = gtk_window_new (GTK_WINDOW_TOPLEVEL);g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);gtk_window_set_title(GTK_WINDOW(window), "你好,世界");gtk_widget_show (window);gtk_main ();return 0;
}

这是在xfce4中运行的界面:

C指针原理(25)-gtk相关推荐

  1. C指针原理(26)-gtk

    下面演示了如何在窗口中增加一个按钮,示例代码均有注释 #include <gtk/gtk.h>static void print_hello (GtkWidget *widget,gpoi ...

  2. Objective-C中,ARC下的 strong和weak指针原理解释

    Objective-C中,ARC下的 strong和weak指针原理解释 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是& ...

  3. iOS arc weak指针原理

    iOS arc weak指针原理 ARC 都帮我们做了什么? weak是什么? weak是怎么实现的? 1. weak原理简介 2. weak简单测试 3. weak原理分析 3.1 weak指针帮我 ...

  4. C指针原理(39)-GLIB

    一.简述与配置 GLib是一个跨平台的.用C语言编写的库,起初是GTK+的一部分,但到了GTK+第二版,开发者决定把跟图形界面无关的代码分开,这些代码于是就组装成了GLib.因为GLib具有跨平台特性 ...

  5. C指针原理(47)-C应用技巧(2)

    委托模型,即有一个BOSS线程,就是主线程,产生woker线程,boss线程和worker线程并发执行. BOSS线程的主要任务是创建worker线程,将工作线程放入队列中,当有工作可处理时,唤醒 工 ...

  6. C指针原理(45)-LINUX应用

    一.在linux平台下,每个线程可有专用数据: #include <pthread.h> #include <stdio.h> struct mydata{ int x; ch ...

  7. C指针原理(43)-helloworld的C程序汇编剖析

    一.汇编基础 1.指令码与数据处理 当计算机处理应用程序运行指令码时,数据指针指示处理器如何在内存的数据区域寻找要处理的数据,这块区域也称为堆栈,指令码放在另外的指令区,此外,还有指令指针机制,当处理 ...

  8. C指针原理(42)-内存管理与控制

    C语言的stdlib库提供了内存分配与管理的函数: 1.通过调用calloc.malloc和realloc所分配的空间,如果连续调用它们,不能保证空间是顺利或连续的.当分配成功后,函数将返回一个指针, ...

  9. C指针原理(40)-递归(1)

    一.递归 递归在计算机科学中,是指在函数的定义中使用函数自身的方法,递归是进行循环的一种技巧(在类lisp等函数语言中它也是实现循环的主要甚至唯一途径,比如下面的LISP代码). 1. 费波那西数列( ...

最新文章

  1. nyoj-37 回文字符串
  2. 为最快动脉线诊断 铁科院联合第四范式完成高铁智能化巡检应用
  3. 深入浅出SQL(2)——select、update…
  4. Winodws Socket I/O模型的整理
  5. 斐波那契数列的非递归实现
  6. Java经典设计模式:五大创建型模式
  7. java+tomcat(apr,native)
  8. 数据库存储I/O类型分析与配置
  9. linux怎样压缩卷分区,怎么调整磁盘分区容量大小
  10. 青云决最新服务器,青云决合区表
  11. 时钟屏保fliqlo
  12. java程序员创业需要_java程序员出路有哪些
  13. 大学生期末网页大作业:基于HTML+CSS+JavaScript蓝色的汽车设备营销企业网站模板13页面
  14. 抓取网易云评论,生成词云图
  15. 机器人运动控制(上)
  16. react根据中文获取拼音_解决 React 中的 input 输入框在中文输入法下的 bug
  17. element 表格显示图片
  18. 计算机等级考试四级网络工程师真题,全国计算机等级考试四级网络工程师笔试真题...
  19. 怪物农场2修改日志3 - 年轮
  20. UBUNTU 20.04服务器安装桌面 xfce4 + xrdp

热门文章

  1. spring boot+mybatis 多数据源切换
  2. centos7下nginx配置
  3. 一起来学习android自定义控件3——边缘凹凸的View
  4. asp.net 设置分页
  5. XML和JSON两种数据交换格式的比较
  6. Linux安装/升级pip
  7. (花里胡哨)New Game!(牛客国庆集训派对Day1)
  8. 20165333第一次课堂测试补漏
  9. Linux安装/卸载软件教程
  10. PHP+ExtJS 文件上传示例