使用PHP-GTK编写一个windows桌面应用程序
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桌面应用程序的更多相关文章
- C++使用代码创建一个Windows桌面应用程序
WinMain函数 Windows应用程序的唯一程序入口. 函数原型 int WINAPI WinMain { HINSTANCE hInstancem HINSTANCE hPreInstance, ...
- 对Windows桌面应用程序进行UI自动化测试
题记:本文简述如何利用appium对Windows桌面应用程序进行UI自动化测试. 所谓UI自动化测试,就是模拟一个用户,对应用程序的UI进行操作,以完成特定场景的功能性集成测试. 要对Windows ...
- 编写一个简单的C++程序
编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...
- Visual C++ Windows 桌面应用程序样例(摘抄)
//================================== //Windows应用程序框架结构(例子) //参考:<Visual C++宝典>陈国建等编著 //======= ...
- 适用于Windows桌面应用程序的.NET Core 3
介绍 9月,微软发布了新版.NET Core,用于构建Windows桌面应用程序,包括WPF和Windows Forms.从那时起开发人员可以将传统的nfx桌面应用程序(和控件库)迁移到.NET Co ...
- 用C语言编写一个简单的词法分析程序
问题描述: 用C或C++语言编写一个简单的词法分析程序,扫描C语言小子集的源程序,根据给定的词法规则,识别单词,填写相应的表.如果产生词法错误,则显示错误信息.位置,并试图从错误中恢复.简单的恢复方法 ...
- 演练:我的第一个 WPF 桌面应用程序 https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/getting-started/walkthrough-my-first-wpf-desktop-application
这篇文章演示如何开发简单的 Windows Presentation Foundation (WPF) 应用程序包括元素所共有的大多数 WPF 应用程序: 可扩展应用程序标记语言 (XAML) 标记. ...
- Cocos2dx集成于windows桌面窗口程序的步骤
2D游戏需要做编辑器,而编辑器总是希望可以复用游戏中的逻辑来运行场景试看效果. 对于cocos2dx开发的程序,这个需求可以描述为: 实现一种方法,在桌面窗口程序中的某个控件上显示cocos2dx的场 ...
- 如何编写一个稳定的网络程序(TCP)
本节我们看一下怎样才能编写一个基于TCP稳定的客户端或者服务器程序,主要以试验抓包的方式观察数据包的变化,对网络中出现的多种情况进行分析,分析网络程序中常用的技术及它们出现的原因,在之后的编程中能早一 ...
随机推荐
- git 上传本地代码到github 服务器
git init git add . (所有文件用 点表示) git commit -m "注释语句" git remote add origin https://github.c ...
- Python XML解析
什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这 ...
- Executor框架(五)Executors工厂类
Executors 简介 Executors 是一个工厂类,其提供的是Executor.ExecutorService.ScheduledExecutorService.ThreadFactory 和 ...
- 大话java性能优化 pdf 下载(全本)
扫加公众号,回复”大话java性能优化",免费获取此书.
- django中使用Ajax
内容: 1.Ajax原理与基本使用 2.Ajax发送get请求 3.Ajax发送post请求 4.Ajax上传文件 5.Ajax设置csrf_token 6.django序列化 参考:https:// ...
- DB性能-隐式转换
1 什么是隐式转换 当源数据的类型和目标数据的类型不同的时候,如果没有转换函数,就会发生隐式转换,也称自动转换.当然, 有些情况下有些类型是不可以发生转换的,比如说从DATE类型转换到N ...
- 收集的一些python基础教学博客
=======python3学习链接======= Python 3 教程:http://www.runoob.com/python3/python3-tutorial.html 深入python3: ...
- python中__init__()、__new__()、__call__()、__del__()几个魔法方法的用法
关于__new__()的用法参考: http://www.myhack58.com/Article/68/2014/48183.htm 正文: 一.__new__()的用法: __new__()是在新 ...
- win10/win7 笔记本 开启虚拟无线 批处理
Microsoft Virtual WiFi Miniport Adapter 一.看网络网卡 有多出的这一项“Microsoft Virtual WiFi Miniport Adapter”,那么说 ...
- 6 python 继承与派生
1.什么是继承? 继承指的是类与类之间的关系,是一种什么“是”什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类 父类又可以 ...