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. PHP使用mysqli扩展连接MySQL数据库

    这篇文章主要介绍了PHP使用mysqli扩展连接MySQL数据库,需要的朋友可以参考下 1.面向对象的使用方式 $db = new mysqli('localhost', 'root', '12345 ...

  2. ORA:01745 无效的主机 绑定变量名

    原因是:mybatis中的mapping映射时,sql语句中忘了加逗号,且逗号处有换行

  3. 听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构

    转自:https://baijiahao.baidu.com/s?id=1600174787011483381&wfr=spider&for=pc 微服务架构是互联网很热门的话题,是互 ...

  4. 经典算法 BFPRT算法详解

    内容: 1.原始问题     =>  O(N*logN) 2.BFPRT算法    => O(N) 1.原始问题 问题描述:给你一个整型数组,返回其中第K小的数 普通解法: 这道题可以利用 ...

  5. OMIM 表型和基因如何关联

    OMIM数据库:大神私藏的数据库,99.9%的人都不知道! 2019-03-04 11:00乳腺癌/医生/肺癌 “ GEO.NCDB.TCGA.SEER数据库这些我都知道,但OMIM是什么鬼? OMI ...

  6. js中在一个函数中引用另一个函数中的函数,可以这么做

    在另一个函数中,将需要使用的函数绑定在window下 // UEditor $(function () { window.ue = UE.getEditor('editor', { // ue即可成为 ...

  7. 3.为什么要使用struts2代替struts1.x

    转自:https://blog.csdn.net/li15365002374/article/details/9166431?utm_source=blogxgwz1 (1)struts2的execu ...

  8. [ilink32 Error] Fatal: Unable to open file 'RM_COMMON.OBJ'

    [ilink32 Error] Fatal: Unable to open file 'RM_COMMON.OBJ' [ilink32 Error] Fatal: Unable to open fil ...

  9. 解决打开visio2013提示windows正在配置的问题

    由于之前装过office2007.也装过2010版本.新安装visio2013就会出现如下情况 解决办法: 主要是要清理完visio2010及之前的那些没用选项 1.在cmd命令下打开regedit注 ...

  10. as2 loadClip

    loadClip(url:String, target:Object) : Boolean target是直接被赋值,而不是add进去