Win32学习笔记 第一章 开始

原创 2003年05月01日 11:29:00

Win32学习笔记

作者: 姜学哲(netsail0@163.net)

教材: Windows程序设计(第五版)北京大学出版社
 [美]Charles Petzold 著
 北京博彦科技发展有限公司 译  ¥:160
参考资料:
 Windows 应用程序设计原理_方法_技术(因为是PDF格式的EBOOK,作者等不详)
 新编Windows API 参考大全  电子工业出版社  ¥:98
 C++ Primer(第三版)中国电力出版社 Stanley B.Lippman & Josee Lajoie 著 潘爱民 张丽 译 ¥:128
 TURBO C实用大全 徐金梧 杨德斌 徐科 编 ¥:42

环境: windows2000 server + Internet Explorer 6.0 + DirectX7.0 + Visual C++ 6.0

图们江计算机程序编制小组(chulsoft.xiloo.com)版权所有,转载请说明出处
------------------------------------------------------------------
【第一章 开始】

爽完了"星际争霸"后不禁有些遗憾。如果星际的地图再大一点,人口限制再多一点就好了。地图尺寸应该是8人地图的81倍,人口应该是6000。目前来说这是不可能的事情。没有任何一台机子能承受得了。我是想指挥一场真正的战争。就像想当年刘邓大军和国民党军打仗一样。其实星际已经很优秀了,我不能再要求什么。

说到这里,我想到了我们最常用的操作系统Windows系列。我去过很多论坛,包括Linux论坛在内,绝大多数网友们非常喜欢骂微软公司和该公司的所有产品。以前我也骂过,后来意识到了自己的错误后,再也不骂了。有很多人用着盗版的WINDOWS和IE上网骂微软。有种的用LINUX上网骂微软行不?要不买个正版再骂也可以呀。

我最喜欢的公司是微软。因为在微软程序员的地位是非常高的,特别是总部。微软是两个天才程序员创建的。向往程序员的我没有理由不喜欢微软。

给微软拍了这么多的马屁,怎么能不懂WINDOWS系统呢?所以我要学习WIN32。彻底了解微软公司的产品。

学习WIN32,也就是读Windows程序设计(第五版)要有三个先决条件。

首先我们应该从用户的角度熟悉WINDOWS系统。意思是说会使用WINDOWS。我想这一点很多人都能做到。

第二,应该了解C语言。为什么?WINDOWS是用C写的,书中是用C语言讲解的,这就是原因。当然如果您愿意,也可以用Pascal写。不过您得找另一本书了。书名应该是Windows程序设计(Pascal版)。

第三,应该有一个Visual C++ 6.0。我也不指望您用的是正版。一万多RMB,比我的电脑还贵。

书上说,我们可以没有任何图形用户界面的编程经验。very good!

微软出版的书嘛,当然免不了大大地夸耀一下辉煌的历史了。

下面来看一看WIN32版的"Hello World",哦,对不起!应该是"Hello Windows98!"才对。

#include<windows.h>

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
 MessageBox(NULL, TEXT("Hello, Windows98!"), TEXT("HelloMsg"), 0);

 return 0;
}

C语言中入口应该是main(),但是到了WIN32就变了,WinMain()代替了main()。对于从来没有接触过WIN32的初学者来讲,上面的程序可能会使您一头雾水。

MessageBox()是对话框函数。是Windows系统提供的。这就是传说中的Windows API(应用程序接口)。函数功能是显示一个对话框。对话框所显示的内容就是第二个参数TEXT(Hello, Windows98!)。第三个参数中的字符串会出现在标题栏中。

有关TEXT(),这是一个宏定义,也就是用define定义的。这是为了兼容UNICODE字符集而做的改动。以后不管是什么时候,您最好把字符串都用TEXT()括起来,有关UNICODE,那是第二章的问题,所以在第一章这个问题根本就不成为问题。

头文件windows.h中包含了其它的头文件,这些头文件中的一部分又包含了另外的一些头文件。

◆WINDEF.H
◆WINNT.H
◆WINBASE.H
◆WINUSER.H
◆WINGDI.H

这些头文件定义了Windows的所有数据类型,函数调用,数据结构和常数标识符。

WinMain()前面的WINAPI在WINDEF.H中定义如下:

#define WINAPI __stdcall

具体的含义我不知道。可能后面会有详细讲解吧。

#define MB_OK                   0x00000000L
#define MB_OKCANCEL             0x00000001L
#define MB_ABORTRETRYIGNORE     0x00000002L
#define MB_YESNOCANCEL          0x00000003L
#define MB_YESNO                0x00000004L
#define MB_RETRYCANCEL          0x00000005L

上面的是MessageBox()的第四个参数选项。想了解他们的具体含义很简单。上面的HelloMsg程序中MessageBox()的第四个参数是零,您可以把那个零换成上面六个常量中的一个,比如:

 MessageBox(NULL, TEXT("Hello Windows98!"), TEXT("HelloMsg"), MB_OKCANCEL);

重新编译后您会发现对话框中多了一个'取消'按钮。如果您使用的是英文版,两个按钮分别是 OK & CANCEL。您可以一个一个的试。

#define MB_ICONHAND             0x00000010L
#define MB_ICONQUESTION         0x00000020L
#define MB_ICONEXCLAMATION      0x00000030L
#define MB_ICONASTERISK         0x00000040L

这些都是对话框中的图标选项。可以用C语言中“|”运算符与前面所提到的六个选项中的一个结合起来,比如:

 MessageBox(NULL, TEXT("Hello Windows98!"), TEXT("HelloMsg"), MB_OKCANCEL | MB_ICONHAND);

运行上面的程序后您将会看到原先的对话框中多出了一个红色的图标,那是一个表示出错时用的“叉叉”,这个图标我不喜欢,我比较喜欢感叹号,所以把程序改成:


 MessageBox(NULL, TEXT("Hello Windows98!"), TEXT("HelloMsg"), MB_OKCANCEL | MB_ICONASTERISK);

运行后您可以非常Lucky地看到对话框中出现了一个白底蓝字的感叹号。

就这样,第一章的内容算是学完了。是不是有股非常非常强烈的,想要写应用软件的冲动?不要着急,慢慢来。下一章简单了解一下Unicode。

《机器学习》-- 周志华 (第一章学习笔记)

第一章学习笔记基本术语 分类(classification):若我们欲预测的是离散值,如“好瓜”“坏瓜”,此类学习任务成为“分类”。 回归(regression):若预测的是连续值,如西瓜成熟度0.6...
  • Cristal_yin
  • Cristal_yin
  • 2017年07月08日 13:11
  • 398

《机器学习》周志华学习笔记——第一章 绪论

1)回归与分类:利用机器学习对离散值进行预测时,称为“分类”,而对连续值进行预测时,称为“回归”。 2)监督学习与无监督学习:根据训练数据是否有标记信息,学习任务可大致分为两大类,“监督学习”与“无...
  • laoma023012
  • laoma023012
  • 2016年08月01日 10:18
  • 1109

如何学习C++ C++学习路线图 从0开始一直到写出WIN32应用程序

逛了这么久的论坛,每次看到发帖量,编程语言区的可谓是门可罗雀,而菜鸟乐园每天都是门庭若市,其实我们本应该不这么浮躁, 安心掌握一门语言,你才能真正把自己的爱好变成一门技术,这篇文章虽然不能帮助想踏...
  • liuwei271551048
  • liuwei271551048
  • 2014年03月11日 13:19
  • 1295

PRML 阅读笔记(一)<1.1--1.2>

第一章《introduction》,一开始先介绍了一些背景zh
  • u013017118
  • u013017118
  • 2014年09月27日 18:06
  • 791

第一章 开始 学习笔记

● 当return语句返回一个值时,此返回值的类型必须与函数的返回类型相同● 每个使用标准库函数的程序都必须包含相关的头文件● 在大多数系统中,main 函数的返回值被用来指示状态, 返回值0...
  • qq_34536551
  • qq_34536551
  • 2017年06月24日 21:59
  • 89

概率统计:第一章 概率论的基本概念

第一章   概率论的基本概念 内容提要: 一. 加法、乘法原理及排列、组合复习 1.  加法原理  设完成一件事有类方法(其中任一类方法都可达到 完成这件事的目的),若第1类方法有种,第2类方法有种,...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年03月01日 12:56
  • 1597

统计学习方法笔记--第一章统计学习方法概论

统计学习方法第一章笔记 赫尔伯特·西蒙曾经对学习下定义:“如果一个系统能够通过执行某个过程改进它的性能,这就是学习。”现在人们提到的机器学习就是统计机器学习。 统计学习包括监督学习(supervi...
  • Selectnew
  • Selectnew
  • 2016年10月06日 18:18
  • 262

Lua学习笔记 第一章 开始

Lua学习笔记 第一章 一节 1.下载安装完lua后,会自带一个lua解释器程序!使用命令 lua hello.lua 便可   运行.lua文件; 2.直接在命令行中执行lua解释器便进入...
  • wang1029
  • wang1029
  • 2014年08月22日 11:08
  • 268

Selenium2学习笔记一

Selenium1和Selenium2     Selenium1.0是一个基于浏览器的开源自动化测试工具,它中可以使用多种语言编程,在运行Selenium1.0程序之前,需要先启动selenium ...
  • lzx_longyou
  • lzx_longyou
  • 2016年07月29日 11:25
  • 868

《构建之法》第一章 概论

摘至 邹欣《构建之法》一书,以作学习之用 1. 大马哈鱼洄游模型 软件工程按照经典的瀑布模型 1. 需求分析 2. 设计阶段 3. 实现阶段 4. 稳定阶段 5. 发布阶段 6....
  • u011414200
  • u011414200
  • 2015年10月01日 23:09
  • 3642
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Win32学习笔记 第一章 开始
举报原因:
原因补充:

(最多只允许输入30个字)