没有合适的资源?快使用搜索试试~ 我知道了~
win32-API-简明教程(入门学习最佳教程)
需积分: 43 120 下载量 75 浏览量
2017-07-29
20:52:40
上传
评论 3
收藏 851KB PDF 举报
温馨提示
试读
93页
win32-API-最佳教程,全面介绍了win32开发的构架,以及主要开发函数,上手快速。 学习最佳资料与教材。
资源推荐
资源详情
资源评论
欢迎阅读 theForger's Win32 API 教程第二版(简体中文)
作者:Brooks Miles
译者:湛宗儒
本教程试图使用尽可能快和尽可能清晰的方法教你开
始 Win32 API 开发.它是以一个整体来组织的,所以在你
提问之前请从头到尾看一遍...你的大多数问题很可能
在文字中已被回答.每个章节以之前的章节为基础.我也
在附錄 A 中附上了一些常见的错误的解決方法.如果你问
一些在教程中已被回答的问题的话,看起来就有点不聪明
了.
·下载完整的范例源代码,在整个教程都有对代码的引用.
·或是下载整个教程 ( 包括源代码 ) 至你自己的计算机上慢
慢看.下到硬盘的版本可能不包括网络版本具有的一些如
拼写更正之类的小规模修改.
如果你在一个別的站点上看此教程,请访问#winprog
站点看最新的官方版本.
·想做 点 什么 ?
·需要进一步的帮助 ?
目錄
·基础
1.开始 学习
2.一个简单的窗口
3.处理消息
4.理解消息循环
5.使用资源
6.菜单和图标
7.对话框 , 图形界面设计者的好朋友
8.非模 态 对话框
9.标準控件 : 按钮 , 编辑框 , 列表框 , 靜态 控件
10.等等 , 我还想问 ... ( 对话框常见问题 )
·创建一个简单应用
1.应用第一部分 : 在运行时创建控件
2.应用第二部分 : 使用文件与常用对话框
3.应用第三部分 : 工具栏与状态栏
4.应用第四部分 : 多文档界面
·图形设备界面
1.位图 , 设备上下文与
BitBlt
2.透明位图
3.定时器与动画
4.文本 , 字体与顏色
·工具与文档
1.推荐的书与参考
2.免费的
Visual C++ 命令行工具
3.免费的
Borland C++ 命令行工具
·附表
附表 A:常见错误的解決方法
附表 B:为什要在学习
MFC
编程之前学习
API
附表 C:关于资源文件
我听某些读者说教材中的源代码在一些很旧的
Netscape
浏览器中不能正确地換行,如
果你遇到此问题请参考
zip
打包下载的源代码
.
想做点什么?
你可以绝对免费地使用此文档,但是把在它放在互联网上的确
是有些费用..如果你感觉它对你有帮助,也想回馈一些,我
将很感谢你能捐赠任何数目的款项来协助支撐此网站.此页面
每月大約有 15,000 个点击,并且在一直增加:)
再说一次,你完全沒有义务支付,你也不会因为支付而得到除了在此处之外的任何东西,
但是你想协助的话,是很好的...就点那个 PayPal 图片就行.
但愿你能享受閱读,
Brook
我想对如下几个人做出的贡献表示感谢
:Yih Horng
,
Todd Troxell
,
T Frank
Zvovushe
,
Suzanne Lorrin
,
Seth McCarus
,
Crispina Chong
,
John Crutchfield
,
Scott
Johnstone
,
Patrick Sears
,
Juan Demerutis
,
Richard Anthony
,
Alex Fox
,
Bob Rudis
,
Eric
Wadsworth
,
Chris Blume.
还有那些写信告诉我觉得此文档有用的那些读者.我很高兴!
需要进一步的帮助?
一般地话我会免费回复求助邮件,或指出在哪里可以找到可供参考的资源.
现在我正忙于几个大项目,所沒有时间跟你写一些特定的范例或一定规模的软件项目.
但是我愿意接项目:)
尽管联系我 .
Copyright © 1998-2003, Brook Miles (theForger). All rights reserved.
开始学习
这篇教程讲什么
这篇教程试图向你展现使用 Win32 API 写程序的一些基础知识(还有常见的扩展知识).
使用 C 语言,大多数的 C++工具也可以编译.事实上从大多数语言的介绍文章可知,大多数
语言皆可调用 API,包括 Java,汇编语言以及 Visual Basic.但是我将不会提到这些语言的代
码例子,你想使用其它语言的话,请自己参考相关资料,不过有好几个使用过此教程的人都
对我说用上面的这些语言都是可行的.
本教程不会教你 C 语言,也不会教你怎么使用你喜欢的编译器(Borland C++,Visual C
++,LCC-Win32,等等).但是我将在附表中就我对编译器的所知提供一些说明.
如果你不知道 macro 或 typedef 是什么,或 switch()语句如何工作,那你要先回去找
一本好的 C 语言的教程学习一下.
重要说明
在此文档的某些部分我将指出某些地方很重要.因为很多人在不閱读它们情況下造成理
解困难,你如果不閱读,你很可能也陷入困难. 第一个就是:
以 zip 打包的源代码范例不是可选可不选的!我沒有把所有的代码放在教程中,只放了
那些与我正在讨论问题相关的.要想知道这里的代码怎么与其它部分配合,就必须去看 zip
文件中的源代码.
好!第二个:
把整个文档看完.如果你在读某章节遇到了问题,请耐心一点,很可能在后面一点就可
以找到答案.如果你实在不能忍受这种无知的状态,请在到 IRC 频道上去提问或发出求助邮
件之前至少跳过一点或在余下的文档中搜一下(是的,计算机可以搜索).
另外一点就是一个关于话题 A 的问题很可能在关于话题 B 或 C 的讨论中得到解答,也
有可能是话题 L.所以多看看,找一下.
好,东扯西拉暂时告一段落,我们来试些实际代码.
最简单的 Win32 程序
如果你是一个完全的新手,就让我们来确认一下你可以编译一个基本的 windows 程序.
把下面这些代码弄到你的编译器中去编译一下,如果一切正常你就得到有史以来最简易的程
序之一.
记得以 C 来编译,不是以 C++.可能沒有关系,但这里的代码都是 C,在正确的轨道,
行驶还是好些.大多数情況,你要做的就是把文件的扩展名写成.c 而不是.cpp..如果这些话
伤了你的脑筋的话,就把文件名写成 test.c 并用它就行了.
#include <windows.h>
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, "Goodbye, cruel world!", "Note", MB_OK);
return 0;
}
如果不行,首先閱读得到的任何错误提示,并在帮助文档或任何其它跟你编译器配套的
文档中查找它们.确定你是以一个 Win32 GUI(不是 Console)的工程/makefile/目标来编译的.
不幸的是,这一点上我也帮不了什么,对于不同的编译器(不同的人),解決方法不同.
你可能得到一些警告说你沒有使用 WinMain()传递的那些参数.这沒关系.现在我们确
定你能编译一个程序了,我们来看一下代码...
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
WinMain()是 Windows 中与 DOS 或 UNIX 的 main()的等价物.这是你的程开始执行的入
口.参数如下:
HINSTANCE hInstance
程序可执行模块的句柄(內存中的.exe 文件).
HINSTANCE hPrevInstance
在 Win32 程序中总是为 NULL.
LPSTR lpCmdLine
命令行参数组成的一个单字符串.不包括程序名字.
int nCmdShow
一个将要传递给 ShowWindow()的整数,我们在后面进行讨论.
hInstance 用作装入资源或其它的以模块为单位的任务.一个模块是一个装入到你程序的
exe 或 dll.对于本教程的大多数部分(如果不是全部的话),我们只关心一种模块,就是 exe
模块.
hPrevInstance 在 Win16 时代曾经用作你程序的前面已经运行的实例(如果有的话).现
在已经不用了,在 Win32 中你忽略它就行了.
调用规则
WINAPI 指定调用规则并被定义为_stdcall.要是你不知道它是干什么用的,先不管它,
在我们的这个教程中它对我们沒有影响.记住在这个位置我们需要它就是了.
Win32 数据类型
你会发现很多普通的关键字或类型在 windows 中有特定的定义.UINT 是 unsigned
int,LPSTR 是 char*等等...你怎么用完全取決于你自己.你要是喜欢 char*超过了
LPSTR,那就用就是了.当然在你替換一个数据类型前你要确定你知道它是什么.
就记住一些容易记住的东西就夠了.LP 前缀代表 Long Pointer.在 Win32 中,Long 这
个部分已经是过时的概念,不要管它.要是不知道指针是什么的话,你可以 1)去找一本好的
C 语言教程,或 2)直接往下读,弄得头脑混乱.我是推荐第一种方案的,但很多人使用第二
种(我也是:).到时候別说我沒有提醒你.
接下来,一个 C 接在 LP 后面表示是常量指针.LPCSTR 表示一个指向不会也不能被修
改的常量字符串的指针.LPSTR 指向的就不是常量的,可以被修改.
你可能还会看到一个 T 混在里面.现在不要管它,除非你打算与 Unicode 打交道,它沒
有其它的意义.
Copyright © 1998-2003, Brook Miles (theForger). All rights reserved.
剩余92页未读,继续阅读
资源评论
feixiongrumeng
- 粉丝: 4
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功