PHP-GTK的下载地址:http://gtk.php.net/download.php?language=en-US,

猿哥选择了最新版本(beta版),可能有人会问我们为啥不选最新的stable版本,猿哥只想对你说,“怕犯错,可能会丢失很多成长的机会”,与此同时,鉴于最新版通常使用了最新的技术规范,更具“轮子”的研究价值,但是这里有一个非常大的前期,那便是如果你想开发出面向大众用户而非自己研究的桌面级(Desktop)应用软件的话,建议用户还是选用最新的stable版本,这是一种用户思维,而不是做学问的思维。

1、选择PHP-GTK最新版本进行下载

2、下载好了二进制(binary)版本的安装包

3、先不看Get started(或者Quick start)文档,快速浏览目录结构

细心的小伙伴可能会发现demos目录,以及gtk的dll文件(动态链接库)

4、最常规的看见运行效果的方式是,我们把demos里面的实例代码运行起来,先给自己一起学习并掌握它之后的“预先”成就感

猿哥猜测通过调用php.exe来运行这里的php文件便可以看到桌面应用的运行结果了,那么结果是怎样的呢?

好吧,运行起来了,但是我们发现两个明显的命令行问题提示,这到底是什么鬼呢?先抛开问题,猿哥玩了一下运行起来的桌面应用程序,感觉十分流畅,想不到PHP作为一门脚本语言竟然能够写桌面级应用,太赞了。

5、接下来就是玩更多的demo,哈哈,我是不是太贪玩了,好吧,打住,猿哥你好像还没回答上面那个问题,为啥会出现两个错误提示,求别卖关子了好么!?

答案很简单,请看下图:

我们貌似发现了一个特别的可执行程序,当我们使用这个可执行文件去执行相应的脚本时会发现动态链接库加载失败的错误提示没有了,这里,猿哥纯属猜测拿到了一个完美的运行结果,但是猿哥不打算深入分析了,对这个问题感兴趣的小伙伴可以使用google大法搜索一下。

6、庖丁解牛,目无全牛

随便打开两个demo,我们会发现,这些应用都是继承了一个叫做GtkWindow的类,这个类是从哪里来的呢?

打开PHP的ext(扩展)目录,我们发现了一下dll扩展:

聪明的小伙伴肯定猜到了,这个gtk类肯定是从php_gtk2.dll文件来的,好吧,猿哥也是这么猜测的,这肯定是自恋症,得治哈。

继续研究源代码的结构我们会发现更多规律性的东西,在这里就不深究了,这里纯粹是抛砖引玉。

使用PHP-GTK编写一个windows桌面应用程序的更多相关文章

  1. C++使用代码创建一个Windows桌面应用程序

    WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, ...

  2. 对Windows桌面应用程序进行UI自动化测试

    题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试. 所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows ...

  3. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  4. Visual C++ Windows 桌面应用程序样例(摘抄)

    //================================== //Windows应用程序框架结构(例子) //参考:<Visual C++宝典>陈国建等编著 //======= ...

  5. 适用于Windows桌面应用程序的.NET Core 3

    介绍 9月,微软发布了新版.NET Core,用于构建Windows桌面应用程序,包括WPF和Windows Forms.从那时起开发人员可以将传统的nfx桌面应用程序(和控件库)迁移到.NET Co ...

  6. 用C语言编写一个简单的词法分析程序

    问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...

  7. 演练:我的第一个 WPF 桌面应用程序 https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application

    这篇文章演示如何开发简单的 Windows Presentation Foundation (WPF) 应用程序包括元素所共有的大多数 WPF 应用程序: 可扩展应用程序标记语言 (XAML) 标记. ...

  8. Cocos2dx集成于windows桌面窗口程序的步骤

    2D游戏需要做编辑器,而编辑器总是希望可以复用游戏中的逻辑来运行场景试看效果. 对于cocos2dx开发的程序,这个需求可以描述为: 实现一种方法,在桌面窗口程序中的某个控件上显示cocos2dx的场 ...

  9. 如何编写一个稳定的网络程序(TCP)

    本节我们看一下怎样才能编写一个基于TCP稳定的客户端或者服务器程序,主要以试验抓包的方式观察数据包的变化,对网络中出现的多种情况进行分析,分析网络程序中常用的技术及它们出现的原因,在之后的编程中能早一 ...

随机推荐

  1. spark SQL概述

    Spark SQL是什么? 何为结构化数据 sparkSQL与spark Core的关系 Spark SQL的前世今生:由Shark发展而来 Spark SQL的前世今生:可以追溯到Hive Spar ...

  2. spark 应用程序部署工具 spark-submit

    打包 Spark application 使用spark-submit启动Spark application spark-submit usage spark-submit option 运行模式相关 ...

  3. NLP-Progress记录NLP最新数据集、论文和代码: 助你紧跟NLP前沿

    Github https://github.com/sebastianruder/NLP-progress 官方网址 https://nlpprogress.com/ NLP-Progress 同时涵 ...

  4. Python3 引入sqlite3时出现错误:ModuleNotFoundError: No module named '_sqlite3'

    在Python3 中内置了SQLite3,但是在编译安装完之后执行: import sqlite3 出现错误: ModuleNotFoundError: No module named '_sqlit ...

  5. Wndows 下npm 安装依赖时出现错误:MSBUILD : error MSB4132: The tools version "2.0" is unrecognized. Available tools versions are "4.0".

    当在Windows环境中使用npm install或者yarn 安装依赖时,可能会出现如下类似的错误: MSBUILD : error MSB4132: The tools version " ...

  6. python3基础:字符串、文本文件

    字符串: 练习1: str = "大胖三百磅不是二百磅陪着一百磅的小胖" print(str.replace("磅", "斤")) # 替换 ...

  7. docker学习笔记 参考

    https://www.cnblogs.com/YDDMAX/p/6045079.html 参考此人播客:docker 分类 http://www.cnblogs.com/51kata/categor ...

  8. ubuntu16.04 安装opencv3.3

    from: http://www.pyimagesearch.com/2016/10/24/ubuntu-16-04-how-to-install-opencv/ Step #1: Install O ...

  9. Linux 的伪终端的基本原理 及其在远程登录(SSH,telnet等)中的应用

    本文介绍了linux中伪终端的创建,介绍了终端的回显.行缓存.控制字符等特性,并在此基础上解释和模拟了telnet.SSH开启远程会话的过程. 一.轻量级远程登录 之前制作的一块嵌入式板子,安装了嵌入 ...

  10. Web标准:六、html列表

    Web标准:六.html列表 知识点: 1.ul无序和ol有序列表 2.改变项目符号样式或用图片定义项目符号 3.横向图文列表 4.浮动后父容器高度自适应 5.IE6的双倍边距bug   1)ul无序 ...