当前位置:文档之家› 3、GTK+2.0 图形化应用程序开发学习笔记(三)—窗体

3、GTK+2.0 图形化应用程序开发学习笔记(三)—窗体

3、GTK+2.0 图形化应用程序开发学习笔记(三)—窗体
3、GTK+2.0 图形化应用程序开发学习笔记(三)—窗体

一、初始化GTK+

写GTK+程序需要调用gtk_init函数对GTK+ 库函数进行初始化。

1.gtk_init

在你程序使用到GTK+工具库之前,必须对它进行初始化。gtk_init可以初始化GTK+工具库。gtk_init的参数的指向主函数argc,argv的指针,它可以改变一些不满足GTK+函数要求的命令行参数。

因为gtk_init函数没有返回值,所以如果在初始化过程中发生错误程序就会立即退出。

2.gtk_init_check

还有一个GTK+库初始化函数gtk_init_check,它的作用和gtk_init完全相同。唯一的区别是gtk_init_check有返回值,可以判断初始化是否成功。

二、建立窗口

GTK+的构件是GUI的组成部分。窗口、检查框、按钮和编辑字段都属于构件。通常将构件和窗口定义为指向GtkWidget结构的指针。在GTK+中,GtkWidget是用于所有构件和窗口的通用数据类型。

GTK+ 库进行初始化后,大多数应用建立一个主窗口。在GTK+中,主窗口常常被称为顶层窗口。顶层窗口不被包含在任何其他窗口内,所以它没有上层窗口。在GTK+ 中,构件具有父子关系,其中父构件是容器,而子构件则是包含在容器中的构件。顶层窗口没有父窗口,但可能成为其他构件的容器。

在GTK+中建立构件分两步:建立构件,然后使它可以看得见。gtk_window_new函数负责建立窗口。gtk_widget_show函数负责使它成为可见。

3. gtk_window_new

gtk_window_new函数用来创建一个新的窗体。type参数几乎总是GTK_WINDOW_TOPLEVEL,表示用创建标准的窗体。还有一个可用值是GTK_WINDOW_POPUP表示建立一个具有弹出菜单的窗体,但是不建议大家使用。我们后面会有GtkMenu来实现菜单的功能。

4. gtk_widget_show

gtk_widget_show函数可以显示构件件(如窗体、按钮等)。要注意:任何的构件在有调用gtk_widget_show函数之前都是不可见的,即使它已经创建了。

三、GTK+的事件循环

对GTK+进行初始化并将窗口和构件置于屏幕以后,程序就调用get_main函数等待某种事件的执行。

5. gtk_main

$ gcc -o base1 base1.c 'pkg-config --cflags --libs gtk+-2.0'

$./base1

程序开始定义了一个窗体,然后用函数gtk_init初始化GTK+库。用函数gtk_window_new 创建一个窗体,用get_widget_show显示该窗体。程序最后调用gtk_main()进入主循环,等待各种事件的发生.

注意该程序不能正常退出,原因是程序没有回呼函数。关于回呼函数我们将会在下面介绍。

四、结束应用程序

6. gtk_main_quit

gtk_main_quit函数可以结束程序,它通常在回调函数中被调用。下面我们介绍回调函数。

五、回调函数

由于程序必须能够对用户的操作做出相应,在基于GUI的程序设计中信号是必要的。移动鼠标,按下按钮,敲入正文或者关闭窗口,将给应用软件的回呼函数提供信号。信号可能需要应用软件来加以处理。如:字处理软件有使字体变黑的按钮。如果用户按下了按钮,就需要调用使字体变黑的程序。与此类型,如果用户关闭了主窗口,在实际关闭窗口以前要进行某些处理(如保存文件,清除等)。

在GTK+中经常产生各种信号,多数情况下信号被忽略。以按钮构件为例,应用软件有专门用于按钮的信号。当用户按下鼠标或释放鼠标按钮时,当用户电机鼠标时,或者当鼠标移过按钮或离开按钮时都产生各自的信号。应用程序可以忽略掉一些信号,只对感兴趣的事件加以处理。

当需要对信号进行处理时,需要用GTK+登记回调函数,并将它和构件联系在一起。构件可以登记回调函数,回调函数可与多个构件联系在一起。

7. g_signal_connect

g_signal_connect用于登记一个GTK+信号,其功能有点像普通信号登记函数signal.当某个空间发出信号,程序就会去执行由g_signal_connect登记的回调函数。

要注意在 2.0 版,信号系统已从GTK 移到GLib,因此在函数和类型的说明中有前缀"g_" 而不是"gtk_"。

下面我们把上面的程序稍微改动一下,使它可以正常退出。

$ gcc -o base base.c 'pkg-config --cflags --libs gtk+-2.0'

$./base

其中destroy为GTK+最基本信号之一,当关闭窗口时,发出该信号。还有一个是delete_event, 当将要关闭窗口时,发出该信号。

程序中添加了gtk_signal_connect函数,当用户关闭窗口时gtk_signel_connect函数调用

gtk_main_quit函数来关闭程序。

大家也可以编写回调函数,在回调函数里结束程序。这样做的好处是当用户试图退出一个程序时,程序可以提示你是否真的退出。

自己编写回调函数的程序例子:

$ gcc -o base3 base3.c 'pkg-config --cflags --libs gtk+-2.0'

$./base3

注意,当关闭窗口时,将在启动应用程序的控制台上显示Quitting消息。这是由回调函数显示的。

从上面的程序可以看到,g_signal_connect对应的回调函数形式为ginit destroy(GtkWidget *widget,gpointer gdata)有两个参数。GTK+还有一个信号登记函数。g_signal_connect_swapped.,它的作用和gtk_signal_connect相同。不同的是g_signal_connect_swapped.对应的回调函数只有一个参数,形式为ginit destroy(GtkWidget *widget)。是因为GTK+有一些只接收一个参数的函数(比如gtk_widget_destroy)。

8. g_signal_connect_swapped

六、其它窗体函数

在上面我们已经介绍了怎样去建立一个窗体,下面我们来介绍其它的窗体函数。

9. gtk_window_set_title

gtk_window_set_title函数可以修改程序的标题。窗口的标题会出现在标题栏中。在X 窗体系统中,标题栏被窗体管理器管理,并由程序员指定。标题应该帮助用户区分当前窗体与其它窗体。

如果我们想把一个程序的标题修改为“Main Window”.我们可在程序中加入

gtk_window_set_title(GTK_WINDOW(window),”Main Window”);

10. gtk_window_set_resizable/ gtk_window_get_resizable

gtk_window_get_resizable可以获得窗体的伸缩属性,系统默认窗体是可伸缩的。

gtk_window_get_resizable有一个返回值,如果可以伸缩为TRUE,如果不可以伸缩为FALSE。

gtk_window_set_resizable 可以修改窗体的伸缩属性,由第二参数指定。

如果我们想把一个窗体指定为不可伸缩的我们可以在程序中添加:

gtk_window_set_resizable(GTK_WINDOW(window),FALSE);

vb练习题,电子版第13章多窗体程序设计

第十三章多窗体程序设计 教学要求: 了解多重窗体应用程序的适用范围与特点,掌握多重窗体应用程序建立的主要步骤;了解多重窗体程序的执行与保存特点,了解Visual Basic工程的结构特点(标准模块、窗体模块、Sub Main过程);掌握闲置循环与DoEvents语句的用法。 知识点: 多重窗体应用程序;多重窗体应用程序的建立、执行、保存;Visual Basic工程的结构特点;闲置循环与DoEvents语句。 内容导航: 一、建立多重窗体应用程序 (一)多重窗体程序设计有关的语句和方法 1.Load语句。格式:Load 窗体名 2.Unload语句。格式:Unload 窗体名 3.Show方法。格式:[窗体名.]Show[模式] 4.Hide方法。格式:[窗体名.]Hide (二)建立界面 窗体的添加方法有如下4种: 方法一:单击“工程”菜单中的“添加窗体”命令; 方法二:用鼠标右键单击“工程资源管理器”的任何项目,在弹出的快捷菜单中选择“添加”,单击“添加窗体”命令; 方法三:单击工具栏中的“添加窗体”命令; 方法四:通过组合键Alt+P,F。 二、多重窗体程序的执行与保存 (一)指定启动窗体 在缺省情况下,应用程序中的第一个窗体被指定为启动窗体。应用程序开始运行时,此窗体就被显示出来。要改变启动窗体的执行方法如下: 从“工程”菜单中,选取“工程属性”命令,选取“通用”选项卡,在“启动对象”中,选取要作为新启动窗体的窗体,最后单击“确定”按钮。 (二)保存多窗体程序 为了保存多窗体程序,通常需要一下两步: 1.保存模块。 2.保存工程 (三)装入多窗体程序 装入多窗体程序和装入单窗体程序一样,只要打开工程文件,工程中包括的其他文件便会自动装入内存,而不用一一打开。 三、Visual Basic工程结构 Visual Basic工程分为3个层次:工程级(全局)、模块级和过程级,这对变量与类型的定义和使用都是很重要的。

ExcelVBA用户窗体编程基础

ExcelVBA用户窗体编程基础 概述 当使用MsgBox函数和InputBox函数不能满足与用户交互的需求时,您能使用用户窗体来自定义对话框。您能使用用户窗体来显示所输入的数据,您甚至能使用用户窗体创建一个完整的用户界面,而不会让用户接触到电子表格本身。 您在Windows对话框中所看到的大多数控件都能在用户窗体中实现——命令按钮,选项按钮,复选框,文本框,组合框——加上一些其它不常用的控件像图像,日历,等等。 本文介绍了用户窗体的基本概念,并介绍了使用用户窗体的常用技术。其中,也讲解了一些最通用的思路。在文章中列举了一个包含所有过程的完整的示例文件,以及实现这些过程的代码,让您能在实践中看到所有工作的基本原理和方法。 本文包含以下内容: ● 基本的用户窗体操作 ● 用户窗体和控件的属性 ● 一个用户窗体的生命周期 ● 用户窗体和控件的事件 ● 问题1:如何在用户窗体间传递数据? ● 问题2:如何找到我的窗体中的某类控件? ● 问题3:如何获取数据到列表框中? ● 问题4:如何为循环创建进度条? ● 一个完整的用户窗体综合示例 基本的用户窗体操作 ?创建一个窗体。打开VBE编辑器(选择菜单“工具——宏——Visual Basic编辑器”或按Alt+F11组合键),选择菜单“插入——用户窗体”,或者在工程窗口中单击右键,从弹出的快捷菜单中选择“插入——用户窗体”,即可创建一个窗体。 ?添加控件。当你创建了一个窗体后,将会显示一个名为“控件工具箱”的浮动工具箱(如果没有该工具箱的话,您可以从视图菜单中找到它),其中显示了最普遍的控件类型。单击您想要的控件,拖动它到您的用户窗体中。 ?更多的控件。有一些更多的可用的控件,您可以在控件工具箱中单击右键,从中选择“附加控件”,您能添加日历、电子表

C#程序设计实验报告(基于窗体的程序设计)

实验报告 专业班级:姓名:学号:实验日期: 一、实验目的: 熟练运用程序控制结构,掌握窗体程序的开发、设计。了解窗体的常用控件、消息对话框、菜单和工具栏的属性、方法和事件,并掌握基于这些控件和组件的窗体应用程序的开发方法。 二、实验内容: 1、编写一个C#控制台应用程序,对于输入的正整数n,计算1!+2!+3!+…+n! 的值并输出。 二、2、编写一个C#控制台应用程序,要求从键盘输入一个正整数n,然后输出n的所有 因子。 3、编写一个C#控制台应用程序,对于输入的年份year,判断该年份是否为闰年。 三、实验过程: 1、 using System; using System.Collections.Generic; using https://www.doczj.com/doc/5b15433703.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) { int n = int.Parse(textBox1.Text); string result; long ln = 0; int j = 1; while (j <= n) { long sum = 1; for (int i = 1; i <= j; i++) sum = sum * i; ln = ln + sum; j++; } result = "1!+2!+...+" + n.ToString() + "!=" + ln.ToString(); label2.Text = result; } } } 运行结果: 2、 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program 2

实验三:VS下基于控件的窗体应用程序设计解析

实验报告成绩 课程名称《.Net程序设计》指导教师实验日期 实验项目名称实验三:VS下基于控件的窗体应用程序设计 一、实验目的和要求 学习掌握windows程序设计的基本方法:①窗体设计使用,了解窗体对象的各项常用属性和方法。并通过这些属性,定制出不同的窗体对象。②掌握常用控件的特点、通过使用控件的常用属性来设置控件的外观及功能,熟悉并掌握利用控件事件编写代码的程序设计方式。学习C#下窗体的菜单栏、工具栏、状态栏的设计方法,完善窗体设计。掌握通过菜单控件实现窗体菜单的多级设计、掌握上下文菜单的设计方法。并通过菜单项的集合属性,深入了解集合的多层概念及使用。掌握工具栏的设计,了解其属性和方法,并通过属性让工具栏项目呈现出不同的外观。 二、主要仪器设备、试剂或材料 微型计算机;Visual Studio 2010语言编译环境 三、实验内容与要求, 1.创建窗体并修改窗体的各项属性,观察窗体的变化 2.在窗体中添加标签控件,按钮控件,编写程序,通过按钮控件的点击事件来改 变标签的显示内容。 3.掌握文本框、日期和事件控件的使用,学习Timer控件的使用(参考课表P173) 4.学习并掌握窗体菜单、上下文菜单控件的设计方法,理解集合中的层次概念 5.学习并掌握工具栏控件的使用方法,设计不同外观的工具栏按钮。 6.掌握常见的对话框控件,编写程序使用打开/保存对话框,并将获取的信息通过 标签显示出来。 四、程序设计思路、运行及及结果分析 1.创建窗体并修改窗体的各项属性,观察窗体的变化

2.在窗体中添加标签控件,按钮控件,编写程序,通过按钮控件的点击事件来改变标签的显示内容。

实验一(C#窗体应用程序)

实验一 一.步骤 例1 1.添加控件 在Windows窗体中添加两个标签控件和两个文本控件,控件的名称分别为label1、label2和textBox1、textBox2。在添加一个命令按钮控件,名称为button1。 2.编写事件处理代码 private void button1_Click(object sender, EventArgs e) { string sno, psw; double num; sno = textBox1.Text; psw = textBox2.Text; if (Double.TryParse(sno, out num)) { if (psw=="123456") MessageBox.Show("输入正确,欢迎使用本系统!", "欢迎"); else { MessageBox.Show("密码输入错误,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); textBox2.Text = ""; } } else { MessageBox.Show("输入错误,学号不能有非数字字符,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); textBox2.Text = ""; } } 例2 3.添加控件 在Windows窗体中添加三个标签控件和三个文本控件,将textBox2。在添加二个命令按钮控件,名称为button1、button2。 4.编写事件处理代码 private void button1_Click(object sender, EventArgs e) { n1 = Convert.ToInt32(textBox1.Text); n2 = Convert.ToInt32(textBox2.Text); if (n1 > n2) { int t = n1; n1 = n2; n2 = t;

实验:Windows窗体应用程序设计

实验六、七:Windows窗体应用程序设计 一、实验目的: 熟悉Windows窗体应用程序设计具体应用 二、实验内容: 1、主菜单设计 1)新建一个名为MainMenu的窗体应用程序,将窗体Text属性设为“主菜单演示” 2)工具箱->公共控件->TextBox,拖动其进入窗体,在窗体中添加一个文本框textBox1 3)工具箱->菜单和工具栏->MenuStrip,拖动其进入窗体,如下图: 4)建立如下所示菜单: 在输入菜单选项名称时,用符号“&”引导一个英文字母表示可用快捷键Alt加该英文字母调出该选项。 5)双击各菜单项,给各菜单项添加如下代码: using System; using System.Collections.Generic;

using https://www.doczj.com/doc/5b15433703.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace E23 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } private void 重置RToolStripMenuItem_Click(object sender, EventArgs e) { textBox1.Text = "欢迎使用主菜单"; } private void 清空DToolStripMenuItem_Click(object sender, EventArgs e) { textBox1.Text = ""; } private void 退出XToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void 关于AToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("主菜单演示,菜单选项的使用", "提示"); } } } 运行程序,测试菜单功能,如下图:

C语言窗口程序设计简介

C语言的窗口程序设计简介 窗口程序设计是依赖操作系统平台的,以下分别介绍基于Windows平台和Linux平台的C语言窗口程序设计。 在Windows中,窗口是嵌入到内核的,编程时,使用自己平台独有的函数。因此Windows程序都只能在Windows平台上运行。Windows的C语言窗口程序设计使用Windows SDK。 /********************************************** *文件名:Message.c *一个简单的消息提示框 **********************************************/ //Windows程序都包含这个头文件 #include //所有Windows程序的主函数入口 WinMain()函数, //相当于一般C语言程序的入口 main()函数 int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance, LPSTR lpcmdline,int ncmdshow) { //调用提示信息窗口API MessageBox(NULL, //没有父窗口 "在迷茫中追逐……\n在追逐中迷茫……", //提示信息内容 "人生寂寞啊", //标题栏 MB_OK | MB_ICONEXCLAMATION); //按钮和图标 //退出程序 return 0; } //==============WinMain函数结束============== 使用wxDev-C++编译Windows的SDK程序,直接新建源文件,在连接器命令中输入: -lgdi32 –mwindows 其中,gdi32是Windows SDK的链接库,-mwindows用来关闭命令行(DOS)窗口显示的。运行结果:

18窗体编程

第18章窗体编程 Windows窗体(Form,形状/表单)原来是Visual Basic程序的用户界面,后来成为.NET 程序的GUI,被Visual Studio中的C#、Visual Basic、F#、MC++和C++/CLI等开发语言工具所使用,后来又从Visual C++ 2005起被引入到MFC编程中。 作为应用程序的基本单元,窗体实质上只是一个(类似于对话框的)简单框架窗口,内含一块空白板(客户区)。开发人员可通过添加控件(包括菜单条、工具条、状态条、计时器和公用对话框等)来创建用户界面,并通过编写代码来操作数据,从而填充这个空白板。为此,Visual Studio提供了一个有助于编写代码的集成开发环境,以及一个针对.NET框架编程的丰富的控件集。通过使用代码来补充这些控件的功能,可以方便快捷地开发所需要的解决方案。 由于时间有限,本章只介绍C# 窗体编程一些基本内容。 相关帮助文档的位置: ●窗体编程:“库主页\Visual Studio 2010\Visual Studio \创建基于Windows的应用程序 \Windows 窗体”。 ●.NET类库:“库主页\Visual Studio 2010\.NET Framework类库”中的System、 System.Windows.Forms和System.Drawing等命名空间。 图18-1是在窗体编程需要用到的一些.NET类型的继承关系图,涉及的命名空间主要有System.Windows.Forms、System.Drawing和System.Drawing.Drawing2D。 18.1 创建窗体 下面我们以一个简单的窗体交互绘图程序FormDraw为例(参见图18-2),介绍用C# 编写简单窗体程序的全过程。 18.1.1 创建窗体项目 打开“新建项目”对话框(参见图18-3),选左边“已安装的模板”栏的“其他语言\Visual C#”项,再选中间栏的“Windows窗体应用程序”模板。选择父目录位置后,输入项目名称“FormDraw”,去选“为解决方案创建目录”复选框,按“确定”钮关闭对话框。

Excel VBA用户窗体编程基础

Excel VBA用户窗体编程基础 本文详细介绍了用户窗体的基本概念及常用技术。 概述 当使用MsgBox函数和InputBox函数不能满足与用户交互的需求时,可以使用用户窗体来自定义对话框。能够使用用户窗体来显示所输入的数据,甚至能够使用用户窗体创建一个完整的用户界面,而不会让用户接触到电子表格本身。 您在Windows对话框中所看到的大多数控件都能在用户窗体中实现——命令按钮,选项按钮,复选框,文本框,组合框——加上一些其它不常用的控件,像图像、日历,等等。 本文介绍了用户窗体的基本概念,并介绍了使用用户窗体的常用技术。其中,也讲解了一些最通用的思路。在文章中列举了一个包含所有过程的完整的示例文件,以及实现这些过程的代码,让您能在实践中看到所有工作的基本原理和方法。 本文包含以下内容: 基本的用户窗体操作 用户窗体和控件的属性 一个用户窗体的生命周期 用户窗体和控件的事件 问题1:如何在用户窗体间传递数据? 问题2:如何找到我的窗体中的某类控件? 问题3:如何获取数据到列表框中? 问题4:如何为循环创建进度条? 基本的用户窗体操作 创建一个用户窗体。打开VBE编辑器(选择菜单“工具——宏——Visual Basic编辑器” 或按Alt+F11组合键),选择菜单“插入——用户窗体”,或者在工程窗口中单击右键,从弹出的快捷菜单中选择“插入——用户窗体”,即可创建一个用户窗体。 添加控件。当创建了一个用户窗体后,将会显示一个名为“控件工具箱”的浮动工具箱 (如果没有该工具箱的话,可以从视图菜单中找到它),其中显示了最常用的控件类型。 单击想要的控件,拖动它到用户窗体中。 更多的控件。有一些更多的可用的控件,可以在控件工具箱中单击右键,从中选择“附 加控件”,能够添加日历、电子表格、图形,等等。 添加事件程序。事件允许当用户对窗体和控件进行操作时作出相应的反应,事件程序要 放置在用户窗体模块中,能够通过双击用户窗体或控件来打开代码模块窗口,或者在用户窗体或控件中单击右键,从快捷菜单中选择“查看代码”来打开代码模块窗口,或者

VS2019创建C++窗体应用程序

VS2019创建C++窗体应用程序1.运行VS2019。 2.点击创建新项目。

3.选择CLR空项目,点击下一步。 4.在配置新项目界面,输入项目名称,选择.net Framework框架,点击创建。

5.在解决方案资源管理器中,右键单击创建的CLR项目,选择属性,弹出属性页。 6.在左侧配置属性中,展开链接器,然后选择“系统”项,在右侧“子系统”下选择“Windows(/ SUBSYSTEM:WINDOWS)”。

7.在左侧链接器下,选择“高级”选项,在右侧入口点,输入Main(区分大小写),然后确定按钮。 8.在解决方案资源管理器中,右键单击项目名称,选择“添加”,然后选择“新建项”。在左侧栏展开“已安装”,

然后展开“Visual C ++”,选择“UI”,最后在右侧栏选择“Windows窗体”,输入名称,然后点击“添加”按钮。 9.在解决方案资源管理器中,展开项目,然后展开“源文件”,右键上面添加的Windows窗体,选择“查看代码”,将以下代码粘贴到窗体代码中。 #include"MyForm.h" using namespace Project2; [STAThread] void Main(array^ args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); MyForm form; Application::Run(% form); } 10.在菜单栏选择“文件”,然后“全部保存”,最后选

相关主题
文本预览
相关文档 最新文档