Win32程序开发流程
2011-07-23 14:44
232 查看
Windows程序分为“程序代码”和”UI资源”两大部分,两部分最后 以RC编译器整合为一个完整的EXE档案。所谓UI资源是指功能菜单、对
话框外貌、程序图标、光标形状等等东西,实际内容借助各种工具产生
,并以各种扩展名的文件存在,如.ico、.bmp、、.cur等等。程序员必
须在一个所谓的资源描述文档(.rc)中描述它们。RC编译器读取RC文
件的描述后将所有UI资源文件集中制作出一个.RES文件,再于程序代码
结合在一起,这才是一个完整的Windows可执行文件。
--------------------------------------------------------------
需要什么函数库(.LIB)
Windows支持动态链接,应用程序所调用的Windows API函数是在
“执行时期”才链接上的。那么,“链接时期”所需要的动态链接函数
库有哪些?做什么用?
Windows程序调用的函数可分为C Runtimes以及Windows API两大部
分。以下是命名规则和使用时机:
LIBC.LIB——这是C Runtime函数库的静态链接版本。
MSVCRT.LIB——这是C Runtime函数库动态链接版本的import函数
库。如果链接这一函数库,程序执行时必须有MSVCRT40.DLL在场。
另一组函数,Windows API,由操作系统本身(主要是Windows三大
模块GDI32.DLL和USER32.DLL和KERNEL32.DLL)提供。
Windows发展至今,逐渐加上的一些新的API函数并不放在GDI和
USER和KERNEL三大模块中,而是放在诸如COMMDLG.DLL、TOOLHELP.DLL
之中。如果要使用这些APIs,连接时还得加上这些DLLs所对应的import
函数库,诸如COMDLG32.LIB和TH32.LIB.
-------------------------------------------------------------
需要什么头文件(.H)
所有Windows程序都必须载入WINDOWS.H。早期较大,现已切割为各
个较小的文件,但还以WINDOWS.Hz总括之。除非十分清楚什么API操作
需要什么头文件,否则为求便利,单单一个WINDOWS.H也就是了。
不过, WINDOWS.H 之照顾三大模块所提供的API函数,如果用到其
它system DLLs,就要载入对应的头文件,例如COMMDLG.H或MAPI.H 或
TAPI.H等等。
-------------------------------------------------------------
以消息为基础,以事件驱动之(message based, event driven)
Windows 程序的进行系依靠外部发生的事件来驱动。换句话说,程
序不断等待(利用一个while循环),等待任何可能的输入,然后做判断
,然后再做适当的处理。上述的“输入”是由操作系统捕捉到以后,以
消息形式(一种数据结构)进入程序之中。操作系统如何捕捉外围设备(
如键盘和鼠标)所发生的事件呢? USER模块掌管着各个外围的驱动程
序,他们各有侦测循环。
如果对应用程序获得的“输入”进行分类,可以分为由硬件装置所
产生的消息,放在系统队列(system queue)中,以及由Windows系统
或其它Windows程序传送过来的消息,放在程序队列(application
queue)中。以应用程序的眼光来看,消息就是消息,来自哪里或放在哪
里其实并没有太大区别,反正程序调用GetMessage API就取得一个消息
,程序的生命靠它来推动。
可想而知,每一个Windows程序都应该有一个如下的循环:
MSG msg;
while(GetMessage(&msg,NULL,NULL,NULL)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//以上出现的函数都是Windows API函数
消息,也就是上面出现的MSG结构,其实是Windows内设的一种数据
格式;
/*Queued message structure*/
typedef struct tagMSG
{
HWND hwnd;
UINT message;//WM_XXX,例如WM_MOUSEMOVE,WM_SIZE...
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
}MSG;
接受并处理消息的主角就是窗口,每一个窗口都应该有一个函数负
责处理消息,程序员必须负责设计这个所谓的“窗口函数”。如果窗口
获得一个消息,则这个窗口函数必须判断消息的类别,决定处理方式。
以上就是Windows 程序设计最重要的的观念,至于窗口的产生与显示,
十分简单,有专门的API函数负责。稍后我们就会看到Windows程序如何
把这消息的取得、分派、处理操作表现出来。
话框外貌、程序图标、光标形状等等东西,实际内容借助各种工具产生
,并以各种扩展名的文件存在,如.ico、.bmp、、.cur等等。程序员必
须在一个所谓的资源描述文档(.rc)中描述它们。RC编译器读取RC文
件的描述后将所有UI资源文件集中制作出一个.RES文件,再于程序代码
结合在一起,这才是一个完整的Windows可执行文件。
--------------------------------------------------------------
需要什么函数库(.LIB)
Windows支持动态链接,应用程序所调用的Windows API函数是在
“执行时期”才链接上的。那么,“链接时期”所需要的动态链接函数
库有哪些?做什么用?
Windows程序调用的函数可分为C Runtimes以及Windows API两大部
分。以下是命名规则和使用时机:
LIBC.LIB——这是C Runtime函数库的静态链接版本。
MSVCRT.LIB——这是C Runtime函数库动态链接版本的import函数
库。如果链接这一函数库,程序执行时必须有MSVCRT40.DLL在场。
另一组函数,Windows API,由操作系统本身(主要是Windows三大
模块GDI32.DLL和USER32.DLL和KERNEL32.DLL)提供。
Windows发展至今,逐渐加上的一些新的API函数并不放在GDI和
USER和KERNEL三大模块中,而是放在诸如COMMDLG.DLL、TOOLHELP.DLL
之中。如果要使用这些APIs,连接时还得加上这些DLLs所对应的import
函数库,诸如COMDLG32.LIB和TH32.LIB.
-------------------------------------------------------------
需要什么头文件(.H)
所有Windows程序都必须载入WINDOWS.H。早期较大,现已切割为各
个较小的文件,但还以WINDOWS.Hz总括之。除非十分清楚什么API操作
需要什么头文件,否则为求便利,单单一个WINDOWS.H也就是了。
不过, WINDOWS.H 之照顾三大模块所提供的API函数,如果用到其
它system DLLs,就要载入对应的头文件,例如COMMDLG.H或MAPI.H 或
TAPI.H等等。
-------------------------------------------------------------
以消息为基础,以事件驱动之(message based, event driven)
Windows 程序的进行系依靠外部发生的事件来驱动。换句话说,程
序不断等待(利用一个while循环),等待任何可能的输入,然后做判断
,然后再做适当的处理。上述的“输入”是由操作系统捕捉到以后,以
消息形式(一种数据结构)进入程序之中。操作系统如何捕捉外围设备(
如键盘和鼠标)所发生的事件呢? USER模块掌管着各个外围的驱动程
序,他们各有侦测循环。
如果对应用程序获得的“输入”进行分类,可以分为由硬件装置所
产生的消息,放在系统队列(system queue)中,以及由Windows系统
或其它Windows程序传送过来的消息,放在程序队列(application
queue)中。以应用程序的眼光来看,消息就是消息,来自哪里或放在哪
里其实并没有太大区别,反正程序调用GetMessage API就取得一个消息
,程序的生命靠它来推动。
可想而知,每一个Windows程序都应该有一个如下的循环:
MSG msg;
while(GetMessage(&msg,NULL,NULL,NULL)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//以上出现的函数都是Windows API函数
消息,也就是上面出现的MSG结构,其实是Windows内设的一种数据
格式;
/*Queued message structure*/
typedef struct tagMSG
{
HWND hwnd;
UINT message;//WM_XXX,例如WM_MOUSEMOVE,WM_SIZE...
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
}MSG;
接受并处理消息的主角就是窗口,每一个窗口都应该有一个函数负
责处理消息,程序员必须负责设计这个所谓的“窗口函数”。如果窗口
获得一个消息,则这个窗口函数必须判断消息的类别,决定处理方式。
以上就是Windows 程序设计最重要的的观念,至于窗口的产生与显示,
十分简单,有专门的API函数负责。稍后我们就会看到Windows程序如何
把这消息的取得、分派、处理操作表现出来。
相关文章推荐
- Win32程序标准开发流程
- Win32程序开发流程
- Win32程序的开发流程和运行图解
- Win32程序开发流程--《深入浅出MFC》
- win32程序开发流程
- Win32程序标准开发流程 .
- Win32 程序开发流程
- MFC深入浅出-Win32程序开发流程
- Android非APK程序开发流程
- 微信小程序开发流程梳理
- [Win32] 服务程序开发(3)Session 0隔离(下)创建SYSTEM权限可交互进程
- 学习Windows Mobile开发系列笔记(win32基本程序框架)
- 程序开发流程
- Windows客户端开发--使用WMI获取显卡详细信息(win32控制台程序)
- 小程序授权第三方管理开发的流程
- win32开发环境下调试opencv程序的一些技巧
- 命令行开发第一个Servlet程序并简要介绍Tomcat工作流程
- Win32控制台程序标准的OpenGL流程
- (十三)Core Java GUI(图形化界面小程序开发,事件监听机制流程,以及可运行jar包的配置实现,) (109)
- 微信小程序开发01-小程序的执行流程是怎么样的?