自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大坡3D软件开发

自主操作系统和CPU--用软件来改变世界

原创 类的继承

在软件设计里,代码的复用和代码稳定性,一直是软件开发的重要目标之一,因为只有这样才能积累各种基础组件,以及维护以前做过的工作。从复用的特性来说,就是利用以前做过的工作,比如就像硬件里的IC一样,不需要知道它是怎么样实现的,只要使用它就行了。因而软件也需要有这种IC,在代码层次里的IC,以前看来只是...

2014-08-29 12:29:27

阅读数 1998

评论数 0

原创 每个窗口单独处理消息的例子源码

整个窗口使用消息类重新写的源码如下:#windows应用程序 #使用类来描述 #开发人员:蔡军生(QQ:9073204) 深圳 2014-8-24 from ctypes import * from ctypes.wintypes import * WS_EX_APPWINDOW = 0x4...

2014-08-28 08:36:41

阅读数 1823

评论数 0

原创 窗口消息处理对象的传递

在前面已经定义好窗口的消息处理类,虽然拥有处理能力了,但还没有放到回调函数里进行相应的调用,那还是达不到目标,还需要下面两个细节的处理,才可以嵌入到消息处理过程里。我们来顺着消息类的传递路径来进行分析它的具体过程,这样理解起来会更顺畅一些,更符常人的思维。具体的过程如下图所示:从上图可以看到,使用...

2014-08-27 12:38:13

阅读数 1445

评论数 0

原创 窗口的消息处理

我们知道一个应用程序一般都不是只有一个窗口组成的,往往是多窗口组成的,比如一个对话框的窗口上有一个按钮,这里对话框是一个窗口,按钮也是一个窗口。如果一个对话框上有100个按钮,就是100个窗口,这样句柄会比较多。因而出现了DirectUI的设计方法,所有按钮和主窗口都是同一个窗口,采用分不同区域来...

2014-08-26 12:42:13

阅读数 1884

评论数 0

原创 窗口显示类

窗口在前面已经注册,并且已经创建出来了,但这时这个窗口并不能出现在我们的眼前,又是什么原因呢?哦,还不显示出来,原来是有原因的,就是窗口有多种状态,窗口可以隐藏、普通显示、最大化显示、最小化显示等。并且创建出来时,不立即显示,也是可以方便一性地创建很多很多窗口,最后才一次性地显示出来;另外创建窗口...

2014-08-25 12:45:22

阅读数 1697

评论数 0

原创 窗口创建类

在前面已经学习怎么样把注册窗口的功能封装成类的形式,接着下来就是创建窗口的功能,而这部分功能又是怎么样编写才是最合适的呢,以便后面所有开发工作都可以复用这些代码。我们来仔细地分析一下窗口上主要有什么东西是可变的,什么东西不变的,原则上就是把可变的东西变成通过函数方式来改变,不变的东西放在类内部,这...

2014-08-22 13:08:29

阅读数 1900

评论数 0

原创 类的成员

类的成员变量在Python里描述数据结构是使用类成员变量的方式,从上面的例子可以看到这样描述:self.wndClass = WNDCLASSEX()这行代码是写在类的构造函数里,通过使用类自身对象self来给类添加成员变量wndClass 。由于在Python语言里没有声明,每增加一个类成员变量...

2014-08-21 12:58:41

阅读数 1845

评论数 0

原创 类的构造函数/类的析构函数

类的构造函数Python类的构造函数是__init__,它与其它函数的区别,首先是通过前面和后面带两个双下划线来跟别的函数名称进行区分。它的格式如下:def __init__(self, 参数列表):def是定义函数的关键字,__init__是构造函数的名称,self是类本身的参数,用来区分那些函...

2014-08-20 12:28:47

阅读数 1553

评论数 0

原创 窗口类型注册类

从前面的窗口程序可以看到,这个程序主要做了三件事情,第一件是注册窗口,第二件是创建窗口,第三件是显示窗口。从程序的代码上,很容易就看出来每个函数是在做什么事情,这典型是基于函数式的编程,行云如流水般。对于小的程序,这样的编程方式是没有什么问题。现在我们来考虑一下如果要注册多个窗口,创建多个窗口和显...

2014-08-19 12:45:07

阅读数 1617

评论数 0

原创 整个窗口应用的源码

为了方便查看,所有源码放在一起,如下:#windows应用程序 from ctypes import * from ctypes.wintypes import * WNDPROCTYPE = WINFUNCTYPE(c_int, HWND, c_uint, WPARAM, LPARAM) ...

2014-08-18 08:44:37

阅读数 1578

评论数 0

原创 创建窗口的应用程序

通过前面的基础知识的学习,已经对ctypes库的基本功能学会了使用,为了加强这种知识训练,以及运用刚学习的知识的快乐,我们来创建一个稍稍复杂一点的应用程序。这个应用程序是所有后面应用程序的基础,只有学会这个程序的基本原理,才可以更进一步学习WIN32的API程序开发。更何况后面所有程序都会在这个程...

2014-08-18 08:42:29

阅读数 1890

评论数 0

原创 指针

在很多C语言编写的函数里,大部分都需要传递指针,比如给函数里传送值进去,或者从函数里返回多个值。在Python里想要跟C函数交互,那么需要模拟指针的类型,才可以实现这种梦想。值得注意的是ctypes已经实现了这个梦想,只要使用它定义的函数pointer()就可以。如下面的例子:#windows应用...

2014-08-15 08:40:04

阅读数 1682

评论数 0

原创 结构体

在C语言的世界里,程序的组成就是结构体加算法。因此,与Win32的API交互中,肯定少不了结构体的类型。在Python里定义的类,并不能直接使用于C的函数,需要通过ctypes里的结构类继承之后,并按它的格式填写字段才可以使用。下面的例子就是定义一个最简单的结构体,表示屏幕上一个点的坐标的结构体,...

2014-08-14 08:32:40

阅读数 1656

评论数 0

原创 回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数主要用来为不确定的事件、不确定的时间上进行的动作或响应。比如在C库里实现了一个算法叫做快速排序(qsort),为了能让库更加通用,不想在函数中嵌入...

2014-08-13 08:45:38

阅读数 1973

评论数 0

原创 实例句柄

在Windows应用程序中,总需要加载应用程序文件到系统内存里,为了标识每个文件在内存的区别,Windows使用了句柄来标识这些文件。比如在一个应用程序里,有一个可执行文件(EXE)和多个动态连接库文件(DLL),这时可以标识可执行文件为0x1D000000,动态连接库文件为0x1D001000。...

2014-08-12 08:41:36

阅读数 4994

评论数 1

原创 函数参数

在下面这行语句里:MessageBox(None, 'Hello World!', 'Hello World', 0)括号里的就是函数的参数列表。C语言编写的函数时,定义函数的参数是使用C语言的方式来定义,那么在Python里编程是使用Python定义的类型,这两者之间是有差别的,这种差别主要体现...

2014-08-11 08:40:03

阅读数 1610

评论数 0

原创 函数名称

在这个例子的Python源码里,把从动态连接库获取到的函数地址赋值给变量MessageBox,然后通过MessageBox就可以调用动态连接库里的函数了。windll.user32是实现了加载动态连接库user32.dll,而windll.user32.MessageBoxW是实现了从动态连接库u...

2014-08-09 08:41:29

阅读数 1810

评论数 0

原创 windll对象

回过头来,再看一下windll和oledll的区别,这两者之间最大的区别是oledll调用的函数都是固定返回HRESULT类型的值,而windll是不固定的类型的。在Python 3.3版本之前,都是返回命名为OSError类型错误,在这之后就返回命名为WindowsError类型错误。通一大段的...

2014-08-08 08:20:23

阅读数 2268

评论数 0

原创 cdll和windll的区别

Python要想调用C语言写的动态连接库,不仅要兼容C接口的调用习惯,还需要兼容C语言的数据类型。幸运的是ctypes库已经做了这两方面的工作,以便调用动态连接库是非常方便的。在Hello World的程序里,这行代码编写如下:MessageBox = windll.user32.MessageB...

2014-08-06 08:33:24

阅读数 5446

评论数 0

原创 from语句

在整个应用程序里,只有三行语句,是一个最简短的WIN32的应用程序,但它的功能也是很有限,只是显示一个提示框,把一个字符串显示出来,其它什么事情也没有做。下面就来分析这三行语句了,别小看这三行语句,其实是隐藏着很多知识点在其背后。比如使用了三个关键字:from、import和None。其中from...

2014-08-05 08:51:55

阅读数 2038

评论数 0

提示
确定要删除当前文章?
取消 删除