这是关于wxWidgets的C++编程指南,wxWidgets是一个跨平台的GUI开发工具包或开发框架(当然它也可开发非GUI应用程序),学习完本指南,你就会使用wxWidgets编写一些小程序了

目录

目录

wxWidgets简介

wxWidgets

C++编程语言

编程语言

多平台编程

安装wxWidgets

wxWidgets的辅助工具

控制台(console)应用

wxString类

实用函数

时间和日期


wxWidgets简介

本节向你介绍使用wxWidgets编程

wxWidgets

wxWidgets是一个用C++编写应用程序的图形用户接口(GUI)工具包。它是一个开源、成熟和跨平台的工具包。wxWidgets应用程序在主要操作系统上都能够运行,包括Windows, Unix, 和Mac OS。项目于1992年由Julian Smart创立。

wxWidgets不仅仅是一个工具包。它还提供了许多用于处理流(streams)、数据库、线程、在线帮助或应用程序配置的类。wxWidgets由许多部件(widgets)组成。关于wxWidgets的社区站点可以访问这里

C++编程语言

C++是使用最广泛的编程语言之一。许多著名的桌面应用程序,如MS Office, MacroMedia Flash, Firefox, Photoshop或3D Max都是用C++编写的。C++语言也主导了PC端游戏世界。它是最难的编程语言之一。换句话说,现在用C++编程与十年前已经有很大区别了。现在有很多编程工具和现成的库让我们用C++编程变得很容易了。

编程语言

目前广泛使用的编程语言有好多种。下表编程语言排行来自于2017年9月TIOBE编程社区,如我们所看到的一样,C++仍然是世界上最流行的编程语言

排行 编程语言 市场占比
1 Java 12.7%
2 C 7.4%
3 C++ 5.6%
4 C# 4.8%
5 Python 2.9%
6 PHP 2.2%
7 JavaScript 2.0%
8 Visual Basic .NET 1.98%
9 Perl 1.95%
10 Ruby 1.9

Java是使用最广泛的编程语言。Java在创建移动应用、编写各种应和企业级应用方面更擅长。而每四个应用就有一个是C/C++编写的。它们是创建操作系统和各种桌面应用程序的标准。C/C++在系统编程方面使用最广泛。

C#是MicroSoft .NET平台的主要编程语言

PHP统揽了整个web领域。同时,Java主要由大的组织所使用,而PHP则主要被小的公司和个人使用,它主要用于制作动态Web应用程序。

而Visual Basic .NET是另一个流行的.NET编程语言。它代表了快速开发应用的流行趋势(RAD --Rapid Application Development)。

多平台编程

如今,多平台编程已经风靡全球。因此,大多数的语言和工具库都要求是多平台的。而wxWidgets从一开始就是作为一个多平台的工具库。对于大多数开发Web应的开发者考虑的就是这一点。或者可以使用wxWidgets、Swing、SWT。Qt工具库是最接近wxWidgets库的竞争者

安装wxWidgets

下面的指令适用于Debian

$ sudo apt-get install build-essential

如果还没有安装C++编译器,应该安装build-essential包

$ sudo apt-get install libwxgtk3.0

这是安装wxWidgets包

这里只是对wxWidgets的简要介绍。

wxWidgets的辅助工具

wxWidgets包含了许多对程序员完成他们的工作有所帮助的工具,包括了与字符串、文件、XML 文件、流、数据库或网络一起使用的工具。这里仅仅展示这些工具当中的一小部分。

wxWidgets库可以用于创建控制台(console)应用和GUI应用。本节将演示一些控制台应用下的工具。

控制台(console)应用

下面是一个简单的控制台应用。它输出一些文本到控制台窗口。

console.cpp

#include <wx/string.h>
int main(int argc, char **argv)
{wxPuts(wxT("A wxWidgets console application"));return 0;
}
$ g++ console.cpp `wx-config --cxxflags --libs` -o console

编译这个控制台应用程序,运行后,将输出: a wxWidgets console application

wxString类

wxString是一个代表一个字符串的类,下面的例子中定义了3个wxString对象。然后我们用加法操作符将它们加起来创建一个新的字符串。

addition.cpp

#include <wx/string.h>
int main(int argc, char **argv)
{wxString str1 = wxT("Linux");wxString str2 = wxT("Operating");wxString str3 = wxT("System");wxString str = str1 + wxT(" ") + str2 + wxT(" ") + str3;wxPuts(str);return 0;
}

编译运行该程序将输出:Linux Operating System。

用于格式化字符串的Printf方法

formatted.cpp

#include <wx/string.h>int main(int argc, char **argv)
{int flowers = 21;wxString str;str.Printf(wxT("There are %d red roses."), flowers);wxPuts(str);return 0;
}

本程序将输出:There are 21 red roses.

下面的例子检查一个字符串是否包含另一个字符串。实现这个功能有Contains方法。

contains.cpp

#include <wx/string.h>int main(int argc, char **argv)
{wxString str = wxT("The history of my life");if (str.Contains(wxT("history"))) {wxPuts(wxT("Contains!"));}if (!str.Contains(wxT("plain"))) {wxPuts(wxT("Does not contain!"));}return 0;
}

程序输出:

Contains!
Does not contain!

返回字符串中字符数的方法Len

length.cpp

#include <wx/string.h>int main(int argc, char **argv)
{wxString str = wxT("The history of my life");wxPrintf(wxT("The string has %d characters\n"), str.Len());return 0;
}

程序输出:

The string has 22 characters

MakeLowerMakeUpper方法分别将字符串中的字符转换成小写和大写

cases.cpp

#include <wx/string.h>int main(int argc, char **argv)
{wxString str = wxT("The history of my life");wxPuts(str.MakeLower());wxPuts(str.MakeUpper());return 0;
}

程序将输出:

the history of my life
THE HISTORY OF MY LIFE

实用函数

wxWidgets有几个便于执行进程的实用函数,获取用户主目录或操作系统名称等

下面的例子是执行一个Unix的 ls 命令。执行这个,wxWidgets提供了一个wxShell函数

shell.cpp

#include <wx/string.h>
#include <wx/utils.h>
int main(int argc, char **argv)
{wxShell(wxT("ls -l"));
}
输出结果如下:
total 40
-rwxr-xr-x 1 vronskij vronskij  9028 2007-09-06 22:10 basic
-rw-r--r-- 1 vronskij vronskij    95 2007-09-06 22:09 basic.cpp
-rw-r--r-- 1 vronskij vronskij   430 2007-09-06 00:07 basic.cpp~
-rwxr-xr-x 1 vronskij vronskij 11080 2007-09-05 23:17 console
-rw-r--r-- 1 vronskij vronskij   500 2007-09-05 23:17 console.cpp
-rw-r--r-- 1 vronskij vronskij   485 2007-09-05 23:16 console.cpp~

接下来我们将使用获取用户主目录,操作系统名,用户名,主机名和总共的磁盘自由空间

system.cpp

#include <wx/string.h>
#include <wx/utils.h>
int main(int argc, char **argv)
{wxPuts(wxGetHomeDir());wxPuts(wxGetOsDescription());wxPuts(wxGetUserName());wxPuts(wxGetFullHostName());long mem = wxGetFreeMemory().ToLong();wxPrintf(wxT("Memory: %ld\n"), mem);
}

程序输出结果如下:

/home/vronskij
Linux 2.6.20-16-generic i686
jan bodnar
spartan
Memory: 741244928

时间和日期

在wxWidgets中,有几个与日期和时间相关的类,下面的例子以各种格式显示当前日期或时间

datetime.cpp

#include <wx/datetime.h>
int main(int argc, char **argv)
{wxDateTime now = wxDateTime::Now();wxString date1 = now.Format();wxString date2 = now.Format(wxT("%X"));wxString date3 = now.Format(wxT("%x"));wxPuts(date1);wxPuts(date2);wxPuts(date3);
}

程序的输出结果如下:

Thu Feb  4 11:05:33 2021
11:05:33
02/04/21

接下来我们将展示不同城市的当前时间

datetime2.cpp

#include <wx/datetime.h>
int main(int argc, char **argv)
{wxDateTime now = wxDateTime::Now();wxPrintf(wxT("   Tokyo: %s\n"), now.Format(wxT("%a %T"), wxDateTime::GMT9).c_str());wxPrintf(wxT("  Moscow: %s\n"), now.Format(wxT("%a %T"), wxDateTime::MSD).c_str());wxPrintf(wxT("Budapest: %s\n"), now.Format(wxT("%a %T"), wxDateTime::CEST).c_str());wxPrintf(wxT("  London: %s\n"), now.Format(wxT("%a %T"), wxDateTime::WEST).c_str());wxPrintf(wxT("New York: %s\n"), now.Format(wxT("%a %T"), wxDateTime::EDT).c_str());
}

程序输出结果如下:

   Tokyo: Sat 05:42:24Moscow: Sat 00:42:24
Budapest: Fri 22:42:24London: Fri 22:42:24
New York: Fri 16:42:24

下面的例子是展示如何对日期或时间加上一段期间,我这里们以当前时间增加一个月为例

datespan.cpp

#include <wx/datetime.h>
int main(int argc, char **argv)
{wxDateTime now = wxDateTime::Now();wxString date1 = now.Format(wxT("%B %d %Y"));wxPuts(date1);wxDateSpan span(0, 1);wxDateTime then = now.Add(span);wxString date2 = then.Format(wxT("%B %d %Y"));wxPuts(date2);
}

程序输出结果如下:

February 04 2021
March 04 2021

今天到此,本微博坚持每天新增内容,感兴趣的朋友,请持续关注。。。。

wxWidgets编程指南相关推荐

  1. 学习大数据分析python编程指南

    每个人都喜欢Python.如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...

  2. 《树莓派Python编程指南》——2.2 一个Python游戏:猫和老鼠

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.2节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  3. 《树莓派Python编程指南》—— 1.3 树莓派快速指南

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第1章,第1.3节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  4. 《树莓派Python编程指南》——2.3 小结

    本节书摘来自华章计算机<树莓派Python编程指南>一书中的第2章,第2.3节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区"华章 ...

  5. 写给NLP研究者的编程指南

    点击上方↑↑↑蓝字关注我们~ 参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 作者 | 赤乐君,日本某大手研发部门的NLP工程师.关注关系抽取与知识图谱的相关研究. 来源 | 赤乐君的知乎专 ...

  6. 高并发编程_高并发编程系列:7大并发容器详解(附面试题和企业编程指南)...

    不知道从什么时候起,在Java编程中,经常听到Java集合类,同步容器.并发容器,高并发编程成为当下程序员需要去了解掌握的技术之一,那么他们有哪些具体分类,以及各自之间的区别和优劣呢? 只有把这些梳理 ...

  7. 《Python面向对象编程指南》——1.2 基类中的__init__()方法

    本节书摘来自异步社区<Python面向对象编程指南>一书中的第1章,第1.2节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区"异步社区 ...

  8. 类型参数的约束(C# 编程指南)

    类型参数的约束(C# 编程指南) Visual Studio 2005 其他版本 38(共 55)对本文的评价是有帮助 - 评价此主题 在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类 ...

  9. IA-32系统编程指南 - 第三章 保护模式的内存管理【1】

    第三章 保护模式的内存管理[1] [作者:lion3875 原创文章 参考文献<Intel 64 and IA-32 system programming guide>] IA-32保护模 ...

最新文章

  1. windows 安装MySQL服务 zip解压程序
  2. WebService站点服务的地址
  3. v8 编译 linux,安装与编译 Javascript V8 Engine
  4. boost::statechart模块实现使用正交状态和 state_downcast 查询正交区域的状态的测试程序
  5. flink的table/sql api的多种写法汇总
  6. java用easyexcel实现读取excell表格内容
  7. 【TW短评测】6999元Find X2 Pro一周体验:这块120Hz屏我能玩一年
  8. SQL Server 2016中的查询优化器更改说明
  9. java验证ie版本的正则表达式_JS 浏览器类型判断,IE版本类型判断,正则表达式判断。...
  10. odi 12.2.1.1新特性
  11. 《C语言程序设计(第五版)谭浩强》学习笔记
  12. PHP程序员简历模板
  13. mysql主从配置修改重启无效
  14. ps证件照换底色(红/蓝/其他颜色都可)
  15. CPU框架~ 什么是X86 ?~什么是ARM ? 华为鲲鹏云是什么?
  16. 数字信号处理学习笔记[3] 滤波与褶积,Z变换
  17. 初学larval 第二篇(大神绕道哦,针对新手友好的一篇)
  18. 查看Window系列本地账户密码
  19. 大数据量的五种处理方式
  20. html盒子模型包含哪些部分,CSS盒子模型由哪四部分组成?

热门文章

  1. 调试、条件处理和防御式编程
  2. 钱币分隔符(js 实现千分符)
  3. 从零开始的Linux 802.11WiFi CSITool(AP和monitor模式均亲测可用)
  4. cdn投资骗收租_广大站长朋友注意了,将近三万人被坑chn域名涉嫌诈骗,chn域名国家根本就没有承认...
  5. 【目标检测-YOLO】YOLO v5 训练最好结果的技巧
  6. 中国隧道掘进机(TBM)行业市场供需与战略研究报告
  7. Redis高可用部署
  8. 1) 数字信号及其基本运算
  9. 软件测试实战:Day02-完成黑马Ego微商小程序的前后台本地部署
  10. 险绝冠天下---华山