关闭

第1章学习笔记

1176人阅读 评论(0) 收藏 举报
感谢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
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:138698次
    • 积分:2164
    • 等级:
    • 排名:第17586名
    • 原创:60篇
    • 转载:15篇
    • 译文:3篇
    • 评论:100条
    最新评论