windows的编程模型不同于传统的c语言结构化编程,就是ms-dos编程模型,先把两者做一比较,以对 windows编程模型有一初步认识.
第一,用c语言编写基于ms-dos的应用程序时,唯一绝对需要的是一个名为main的函数.当用户运行程序时,操作系统调用main,并且从这里开始可以使用任何需要的编程结构.如果程序需要获得用户键击或系统服务,便可调用适当的函数,例如getchar,或可以使用一个基于字符的窗口库.而当windows操作系统启动一个程序时,调用的是winmain函数.它最重要的任务是创建应用程序的主窗口,并处理系统发送给它的消息.两者一个基本区别是ms-dos程序调用操作系统来获取用户输入,而windows程序通过来自操作系统的消息来处理用户输入.
【程序编程相关:Windows Socket1.1 程序】
【推荐阅读:基于MFC对话框的OpenGL类 】第二,许多ms-dos程序直接写显存与打印机接口.这种技术的不利之处是对每一种设备需要其支持的驱动程序软件.windows引入了一个名为图形设备接口(gdi)的抽象化外层,所以用户不必知道有关系统设备的类型.windows程序不是寻址硬件,而是调用gdi函数,这些函数引用名为设备上下文(device context)的数据结构.windows把设备上下文结构映射到物理设备,并且发出适当的输入/输出指令.图形设备接口几乎与直接视频访问一样快,并且它允许不同的windows应用程序来共享显示.
【扩展信息:线程学习笔记(2)-互斥对象 】
第三,要在ms-dos环境下进行数据驱动编程,必须或者为把数据编码成为初始化常量或者提供独立的数据文件让程序来读.进行windows编程时,使用大量已经确立的格式在资源文件中存储数据.链接程序把二进制资源文件连接到c++编译器的输出来产生一个执行文件.资源文件包括位图.图标.菜单定义.对话框外观与字符串,甚至可以包括自定义的定制资源格式.
第四,在ms-dos环境下一个程序的所有对象模块在建立过程中是静态连接的.windows允许动态链接,这意味着特别创建的库可以在运行时加载与链接.多个应用程序可以共享动态链接库(dlls),它节省内存与磁盘空间.动态链接增加了程序的模块性.
... 下一页