第1章学习笔记

原创 2006年05月25日 14:27:00
感谢Leader Liang和Diyinside的支持.

Diyinside Community Academy Course (Beta)

Windows API Course(1)

目标:
1,了解Windows平台发展
2,解释动态连接
3,了解Windows通用开发环境和语言
4,编写最简单的Win32 API应用程序
5, 了解Visual Studio .NET 2005 环境编写Win32 API

学习内容:
阅读<Programming Windows,Fifth Edition> Chapter 1

Learning WIN32 API Homework By citypw(Shawn Chang)

Target1:了解Windows平台发展

80年代初期,Apple的Macintosh和Microsoft的Windows作为图形用户界面的操作系统发布了.

1983年,Microsoft宣布将要发布Windows.

1985年,Windows发布.在之后的2年间,windows在推出了几个更新以后推出了Windows 1.0,它带一些视频显示驱动和支持打印机.

1987年,Windows 2.0发布.它对用户接口做了一些改进.2.0可以有窗口重叠,而1.0平铺的,增强了键盘和鼠标接口的支持,同时增加菜单和对话框.

这时的Windows只能通过8086或者8088处理器运行的"实模式"访问1MB的内存(CityPW:真惨!我们应该珍惜今天啊).
Windows/386(在2.0发布后不久发布的)使用"虚拟86"模式的INTEL 386处理器来做窗口和多任务,很多DOS程序可以直接访问硬件.Windows 2.1被更名为Windows/286.

1990年5月22日,Windows 3.0发布.第一个在家庭和办公用户中有影响力的东东,windows程序可以访问16MB的内存.

1992年4月,Windows 3.1发布.可以听歌了,它只能运行在286和386的保护模式下.

1993年7月,Windows NT发布.这是Windows第1个支持32位Intel 386,486和Pentium处理器的版本.NT同样可以运行在非INTEL的机器上.

1995年8月,Windows 95发布.支持32位程序模式.(我用的第1个WINDOWS系统)

1996年8月,Windows NT 4.0发布,它集成了IE4.0.

1998年6月,Windows 98发布.它支持更多的硬件和互联网.

1999年6月,Windows 98 SE(第2半)发布.它包括一些改进,例如Internet Explorer 5,Windows Netmeeting 3,Internet Connection Sharing,对DVD-ROM和对USB的支持.

2000年9月14日,Windows ME发布.一个16位和32位混合的系统.(最恶心的WINDOWS系统)

2000年12月19日,Windows 2000(NT 5.0)发布,发行了4个版本.

2001年10月25日,Windows XP发布,家庭版和专业版.

2003年3月24日,Windows Server 2003发布.对活动目录,组策略操作和管理,磁盘管理等面向服务器的功能作了较大改进,对.net技术的完善支持进一步扩展了服务器的应用范围.

目前Windows Vista进入beta阶段了.

推荐大家看一部电影<Pirates of Silicon Valley> 下载地址:http://lib.verycd.com/2005/09/01/0000063446.html

Target2:
Dynamic Linking
动态链接库是windows中的一个核心概念,很多函数的执行内容都在后缀为.dll的文件里.目前的Windows系统都有以下几个动态链接库文件:
KRNL386.exe(16-bit)和KERNEL32.dll(32-bit):主要负责处理操作系统的核心,包括内存管理,文件I/O和任务.
USER.exe(16-bit)和USER32.dll(32-bit):负责涉及用户接口的问题和创建窗口中的逻辑.
GDI.exe(16-bit)和GDI32.dll(32-bit):图形设备接口,通过它可以让文字,图形显示在屏幕上.

在我们以前的C语言程序设计当中,C语言的函数代码都是可见的,而windows程序设计中所调用的函数都封装在dll里,Win32 API是以C形式封装的,动态链接库只是在应用程序运行时如果需要一些函数时加载.

Target3:
The Programming Environment
1,WIN32 API:以C形式编写WINDOWS程序,调用本地API,所以此中开发的应用程序性能通常时最好的(建议使用Visual C++ 2005)
2,如果在家进行休闲编程的话可以考虑Visual Basic .net和Borland Dephi(现在面临倒闭).
3,MFC:把WIN32 API封装成了C++的类,MFC不是万能的,在开发商业程序上他的开发效率会比较高.但MFC自身为了绕开C++的先天弱点所以变得异常庞大,这使我们开发人员头痛.(一个基类如果申明1000个virtual function,在派生类里不管只改写多少virtual function但它的内存开销都使按1000个函数开销,如果派身类继续成为基类派身这种开销依此类推)不知道这种理解对否?大家一起讨论.

Target4:
编写最简单的Win32 API应用程序
#include <windows.h>
int WINAPI WinMain(          HINSTANCE hInstance,     //实例句柄,句柄指向当前的应用程序实例
                   HINSTANCE hPrevInstance,                  //句柄指向前一个程序实例,是16位的产物,以淘汰
                   PSTR lpCmdLine,                              //命令行,当程序运行时就用这个命令行把文件加载入内存,申明:typedef CHAR *PSTR;

                   int nCmdShow   //窗口显示的方式
                   )
{
    MessageBox(NULL,TEXT("How you doing?man"),TEXT("Hello"),0);  //弹出一个消息框
    return 0;
}
MessageBox什么:
int MessageBox(          HWND hWnd,
    LPCTSTR lpText,
    LPCTSTR lpCaption,
    UINT uType
);

Target5:
运行Visual Studio 2005,File->New->Project,选择Visual C++下的Win32选项里的Win32 Project,把Name(项目名字),Location(目录路径)填写好,点击OK.选择Empty Project,File->New->File,在Source Files右键->Add New Item,选择C++ Files(.cpp),把Name和Location写好.差不多OK,可以写代码了.写好代码然后F5.


what's different WinMain(Win32) and main (C language) functions?
  The entry point to a C program is the function main, the entry point to a Windows program is WinMain.We could make the different arguments to main or WinMain.

OK. The Application Entry Point is the place in your program where it all begins. Traditional C/C++ programs have an entry point called main() - Win32 programs have WinMain(),Windows GUI application has WinMain() function instead of main().Win32 Application belong the WINDOWS GUI application and Win32 Console belong the 32-bit DOS program.main() could be 16-bit DOS program's entry point.
The arguments of main() like this main(int argc, char *argv[]) and  we had a  choice whether write the arguments in every progarm or not.But We must write the arguments of WinMain() like WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR lpCmdLine,int nCmdShow).

So if we wanna make a Windows GUI program for 32-bit,we must use of WinMain().



                                                          id:CityPW
                                                          Shawn Chang
                                                          http://blog.csdn.net/raiden56
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Objective-C 学习笔记 - 第1章 入门

第1章 入门 欢迎 Objective-C 新手们随我一起踏上这次Objective-C之旅!本章首先简要介绍了这门语言,然后就介绍了苹果公司的 Objective-C 开发平台,随后再介绍了苹果...

《TCP/IP详解》学习笔记-第1章 概述

TCP/IP通常被认为是一个四层协议系统:1)链路层(数据链路层或网络接口层),通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。 2)网络层(互联网层),处理分组在网络中的活动。 3)...

算法学习笔记 第1章 排序

目录: 冒泡排序 桶排序 快速排序 第1章主要讲了桶排序,冒泡排序和快速排序。 + 桶排序最快最简单,冒泡排序是入门级排序,快速排序是最常用的排序。 + 时间复杂度:桶排序O(N+M),快速排序O...

【学习笔记】高性能MySQL(第三版)——第1章:MySQL架构与历史

MySQL并不完美,却足够灵活,能够适应高要求的环境,例如Web类应用。同时,MySQL既可以嵌入到应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统(OLTP)等...

《大话设计模式》学习笔记——第1章——简单工厂模式

最近开始学习《大话设计模式》这本书,以每章一篇博客的形式把学习心得记录下来。代码部分使用的均为C#,开发工具是VS2013,我的代码可以在[我的GitHub](https://github.com/1...

《Python基础教程(第2版 修订版)》 第1章 快速改造:基础知识(学习笔记)

1.1安装Python 前文已经介绍,这里不赘述,前文已经介绍了在windows7的配置 配置完成后输入命令 “python” ,得到以下信息 Python 2.7.10 (default, May ...

Unix网络编程学习笔记之第1章 简介

一、一个简单的时间获取客户端 #include #define MAXCON 50 #define MAXLINE 1024 #define PORT 13 void err_sys(const c...

《精通正则表达式》学习笔记——第1章:正则表达式入门

学习书籍是中文第三版《精通正则表达式》,作者:(美国)佛瑞德 (Friedl.J.E.F) 译者:余晟 第1章:正则表达式入门正则表达式是强大便捷高效的文本处理工具,可以对文本进行增加,删除,分离,叠...

Oracle 9i/10g/11g编程艺术(2e)学习笔记【第1章】

第一章  开发成功的Oracle应用 1、关于位图索引        位图索引适用于低基数(low-cardinality)列。低基数列就是指这个列只有很少的可取值。采用位图索引,一个键指向多...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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