感谢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
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