没有合适的资源?快使用搜索试试~ 我知道了~
首页Win32 SDK教程
资源详情
资源评论
资源推荐

01 章 SDK
入门
01 章 SDK 入门
现在我们要学的是 的编程,与 不同的是,实现的目标是一个
具有你所需要的功能的“窗口”。这个“窗口”时时刻刻都在与操作系统之间,通过一个称
之为“消息队列”的东西传送数据。因此处理好各种消息便成了 编程的核心。
编程是相对于 来说的,也就是用 和 来调用 ,这
是操作系统的东西,其他语言(如 )也可以调用。因此,以前也有人将这种编
程称为 编程。当然,这儿对 或 进行了一些扩展,所谓扩展,就是增加了许
多宏定义、模板,让你看了之后大吃一惊,真不知“何方神圣”倒底有何神通。
如果你 或 还不会的话,请先学习 语言和 语言,否则,你再刻苦也
等于看电影,也许你看懂了但你肯定不会演电影。学习窗口编程之前,你要知道几个
概念。
实例 这是 的内容,“类”相当于结构体的数据类型,用
“类”这种类型去定义一个变量(如果是指针,则假定已经得到了空间),
这个变量就是那个“类”的“实例”。它和 语言中的变量是一回事,不过只
有用“类”定义的变量才称为“实例”。
句柄!":这是 语言的内容,和文件句柄一样,它实际上是一个整
数,用来标识是哪一个实例,也就是实例的标识符。通过句柄可以操作这
个实例。
回调##:这其实是 语言中的函数指针,函数指针一般在大项
目搭框架时常常使用。也就是你设计好要得到什么,把接口定义好,具体
怎么实现完全交给别人,别人只要把函数名传给你就 。这个函数名就
是地址,不过取这种地址的指针在定义上与普通指针有些不同。小雅在
《 语言教程》的“函数指针”中有详细解说和例子。
一、
WinMain()
函数
函数是窗口程序的入口函数,在这个函数中你就可以调用各种 函
数来完成你的目标。①一般是先调用 $%&"'(函数用当前窗口句柄去向操
作系统申请或称登录将要创建一个什么样的窗口,申请成功后,②再调用
&'(函数创建一个窗口对象,这仅仅是一个外观,③还要调用
!函数设置初期表示,即最大或最小或普通等。④最后还要调用
)*函数向窗口传送 +,- 消息来画出窗口里面的内容。
窗口创建完后,这是一个“静止”的窗口,⑤因此还要在 函数的最后添
加消息循环,最后才 &.&。函数完了之后,⑥还要再编写一个“窗口消息
处理”函数。上面讲了一大堆 函数的调用也许有点昏头,但那些全是固定的,基本

上不要编程。在你理解之后,只要修改少量参数便可,真正要编程的是这个
“窗口消息处理”函数。
下面我们从简单入手,先不创建窗口,而只是调用一下通用对话框。主
要是了解 函数。
/". 0!1
',-$2 3,-,' !4 55当前窗口实例句柄
3,-,' !&64 55前一个实例句柄, 下为
,)##
#-$ "*7#4 55命令行参数字符
7! 55窗口的显示方式
8
%(,)##49劝学网欢迎您!94 9!*55:.(.594 +; 55通
用对话框
&.& <; 55函数返回值
=
初学者不明白的地方还很多,但大都可以就这样先用,以后慢慢理解,小雅当初
问了很多“高手”,答案却让我更不明白,只好“慢慢理解”。这样拖了几年,现在小雅就
一一解说,如有不对,上论坛指摘 句。
',-$2 不是返回类型,这是为编译器准备的一个宏定义,告诉编译器
将当前函数编译成 >? 位机也能用的长调用。为什么要这样一个开关呢?
."要兼容 语言、语言、> 位的 版本等,同时
还要为将来扩展为 >? 位机作准备。虽然它和 ## 是同一宏定义,
但编译时还是略有区别。
函数在, 上变成了+,这也是为了兼容而定义
的宏定义。
3,-,' 是实例句柄,象这样用 3 或 ! 开头的东西(如 3)都是
句柄,其值是整数。如果你硬写成 型,编译器会分不清,因此出编译
错误。
? #-$ 是 ),' 型的字符串指针。
@ ! 是当前窗口的实例句柄,!&6 是 > 位机上用于识
别当前窗口是否重复打开,当 !&6 不为 ,)## 时为前一个窗
口实例句柄,在 位机上 !&6 恒为 ,)##。
> "*7# 是命令行传来的参数。
A 7! 是初始显示方式,最大5最小5正常5隐藏等等。
B %(函数是 的 函数,调用通用对话框。这不是我
们要学习的窗口编程。

二、基本
Win32
程序
下面是生成一个窗口的最基本的程序,也是后面要介绍的内容,大家看了之后能
找到上面讲的①CD,那就 了。
/". 0!1
-3$ E-"FGH9小雅的劝学网9; 55窗口的标题
-3$ E"FGH97*"9; 55窗口的名称
- I$%&"3,-,';
# 3,-,'4 ;
#$')#- ## &3,4 ),-4 $4 #$;
',-$2 3,-,' !4
3,-,' !&64
#-$ "*7#4
7!
8
J 7%;
I$%&"!; 55注册窗口类
K L !4 7! 55初始化窗口
8
&.& #';
=
!" J%M7%4 ,)##4 <4 < 55消息循环
8
-&"%M7%; 55消息解释
*!%M7%; 55消息发送
=
55注意:不能用“&.& <;N,因为有非正常退出的可能性
&.& 7%&7;
=
55注册窗口类

- I$%&"3,-,' !
8
,#'O ; 55定义一个窗口类,其实是一个结构体
PE H EK,#'O; 55结构体的字节长度
I" H +3$'$ Q +$'$; 55窗口式样
"*K& H ,$&; 55窗口处理函数
P"'(& H <; 55分配给窗口类结构之后的额外字节数,一
般为 <
P'(& H <; 55分配给窗口实例之后的额外字节数,一般
为 <
! H !; 55实例句柄
! H #!4 #--$+#-,;
!.&& H #.&&,)##4 +$$; 55光标
!P&R%&. H 3$)3JRPS3-'+$)3; 55背景
"*E.,7 H ,)##; 55菜单
"*E",7 H E"; 55窗口名
!7 H #!4 #--$+#-,;
&.& $%&"'(M;
=
55初始化窗口
# 3,-,' !4 7!
8
3, !;
55创建窗口
! H & E"4 55窗口名
E-"4 55窗口标题
+'$#',4 55窗口式样
<<4 55窗口左上角的 ( 坐标
<<4 55窗口左上角的 I 坐标
<4 55窗口的宽度
B<4 55窗口的高度
,)##4 55父窗口句柄
,)##4 55菜单句柄
!4 55实例句柄
,)##; 55创建参数
K L!

8
&.& #';
=
!!4 7!; 55显示窗口
)*!; 55立即显示
&.& -$)';
=
55窗口消息处理
#$')#- ## &3, !4 ),- 7%4 $ &74
#$ "&7
8
! 7%
8
+'-$2 55关闭窗口
T.%<; 55发送关闭消息
P&R;
K."
&.& K&!4 7%4 &74 "&7; 55缺省窗
口处理函数
=
&.& <;
=
02 章 创建一个简单窗口
在上一章的基础上,一样一样地学习 编程的内容,大家只要跟着教程多动手,
多看帮助。这三章攻克之后,后面就不难了。
一、注册窗口类
U- I$%&"3,-,' !N中的 - 是无符号整
数类型,参数 ! 是当前窗口的句柄,这里的关键是 函数
$%&"'(M,先看一下这个函数的原型。
- RegisterClassEx
,- ,#'O V"*(
;
剩余63页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论6