20170504Windows01_Windows简介

Windows简介:

    1:windows都是向下兼容的。每一台电脑都有自己的OS系统,会提供一些函数,用于操作硬件。硬件和软件开始分离开了,很久以前,硬件和程序是一一对应的。
    2:应用程序和硬件之间的就是操作系统。OS是一个特殊的软件,必须按照特定的规定编写,这样软件才可以在操作系统上面操作硬件。它里面有专门操作硬盘的,专门操作显卡的,专门操作内存的……,电脑的软件分工越来越明确。
    3:发现不是每个人都可以都有编码和系统打交道,所以就出现了MS_DOS,提供了很多命令行给用户,方便用于与计算机之间沟通。
    4:乔布斯发明了一套基于图形界面的操作系统,并将专利免费提供给了微软,出现了图形界面系统。
    5:内核:NT10.0指的是操作硬件的能力,每次发布的新系统都会向下兼容,如果有新特性的函数,就发布成EX版本函数,这样会导致老旧的函数越来越多,新系统对老旧函数的支持性就会逐渐变差,这就是很多老版本软件在新系统下兼容不好的原因,如果保存所有老旧的函数,就会让系统变得越来越臃肿。
    6:关于Windows的问题的准确答案只能在MSDN上面找,其他的答案都只能是作为参考答案。

Windows版本经历时期:

    1:16位图形用户界面
        1:不算是操作系统,还是直接与物理内存打交道。
    2:16位和32位混合操作系统
        算正式的操作系统。微软进入基于NT的结构时代,16位已经用的很少了。
    3:32位操作系统:
        基于NT结构的。
    4:64位操作系统:
        基于NT结构的,64位Windows NT架构系统,分别支持IA-64(和惠普一起开发的)架构和x64架构的两种不同版本。

    位数:CPU的计算能力将有CPU的位数来决定,64位比32位块更多是在浮点数运算很快。
    现在计算机发展的瓶颈不在于CPU的位数,而在于I/O操作上,现在发展的多数在于固态硬盘,内存等,很久以后也可能会出现128位的操作系统。
    32位CPU上不可以安装64未的操作系统。

NT结构:

     1:所有的程序都运行在内存中(电脑中的内存,称为物理内存),包括OS等,如果在软件中使用了错误的内存地址,修改到了这种核心程序的东西,就会导致其他程序的数据被更改,导致对应程序可能崩溃,直接操作物理内存风险是非常大的。在WindowsNT之前都是直接操作物理内存,WindowsNT之后就分为了用户态和和核心态,它是通虚拟内存管理程序实现。虚拟内存中程序在执行的时候会正确地加载到物理内存。我们写的程序都是在用户态,发现可以执行才会转到核心态。这样确保程序崩溃后操作系统并不会崩溃。所以以前的95,98系统很容易出现操作系统崩溃,蓝屏等。
    2:流程为:软件 -> 用户态 -> 核心态 -> 硬件。用户态又称为Ring3层,核心态又称为Ring0层。
    3:硬盘上面的程序是不可以执行的,CPU是在内存中取数据,硬盘的数据取到CPU中,就需要先加载到内存。
    用户态:平时我们能作用到的。
    核心态:操作系统作用到的。

Windows与编程语言:

1:Windows API:

    OS在硬件之中抽象了一层接口。操作系统暴露出来的全部函数称为API。

2:SDK/API/MFC:

    SDK:软件开发工作包,是有厂商提供的,比如讯飞提供的语音识别的SDK、QT。可以认为API是SDK里面的一部分,还包括对应的文档,库等

    API:仅仅指提供的函数。

    MFC:不是SDK也不是API,称之为框架/引擎。是对WindowsAPI进行了一层封装。把SDK里面的东西做成有组织的代码,只需要做少量改动就可以实现需要的,这个就称之为框架。Windows下还有很多框架,不只是MFC。

Windows API分类:

MFC封装了下面大部分东西。Windows API全部会超过2000多个。

    1:基础服务(Base Services):

        文件系统:包括文件的读写,C语言的文件操作函数是属于语言层级的,他最终会调用文件系统的,否则我们没办法来操作文件。
        外部设备:USB等外部设备,都有API接口。
        进程:应用程序启动就会进入一个进程,是Windows下的单位,对正运行的一个程序打包了一块空间。可以启动一个进程和关闭进程。
        线程:一个程序不仅仅是空间,还有运行状态,这些就是由线程来管理。进程和线程就可以实现多任务处理机制。线程的启动关闭销毁在程序中。
        注册表:是Windows的一个配置表,存在于配置系统之中。主要用来修改操作系统的设置。API会对注册表进行增删改查。
        错误处理机制:
注意:这些API都是通过DLL来提供,32位下的kernel32.dll和advapi.dll。

    2:图形设备接口(GDI):

        输出图形内容到显示器、打印机以及其他输出设备。32位下在gdi32.dll里面。GDI的效率不高,是一个WindowsAPI,每一台电脑都有。多用于做界面

    3:图形化用户界面(GUI):

        创建和管理屏幕和大多数基本控件,比如按钮和滚动条。
        接收鼠标和键盘的输入,以及其他与GUI有关的功能。
        在user32.dll里面。

    4:通用对话框链接库(Common Dialog Box Library):

        打开/保存文件对话框、颜色对话框和字体对话框等等。comctl32.dll里面。

    5:通用控件链接库(Common ControlLibrary):

        状态栏:
        进度条:
        工具条:
        标签:

    6:Windows外壳(Windows Shell):

        作为Windows API组成部分,不仅允许应用程序访问Windows外壳提供的功能,还对之有所改进和增强。

    7:网络服务(Network Services):

        为访问操作系统提供了多种网络功能提接口。包括NetBIOS,Winsock,NetDEE及RPC等

    8:多媒体相关API:

封装库:

    MFC:用C++封装的Windows API的功能,因而允许用更为面向对象的方式进行交互。
    ATL:是对COM面向模板的封装。
    WTL:是对ATL的增强,被用来作为MFC的轻型替代物。
    OWL:Borland推出的为与MFC竞争的产品,OWL提供了类似的面向对象封装。
    VCL:Borland推出的,取代OWL。
    大多数Windows程序框架是对Windows API的封装,因而 .NET Framework、Java以及其他在Windows下的程序语言,都是(或包含)封装库。

Windwos API入门:

    1:新建Win32程序的时候,VS编译器会默认将一些东西包含进去了,在连接器里面可以看到。只需要包含windows.h就可以使用Windows API了。在非VS下,需要自己指定链接库,包含目录等,这样也可以使用WindowsAPI。


注意:里面总共包含了很多项(VS2013):

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib

    2:MessageBox包含很多版本,A版本是窄字节版本,W是宽字节版本,EXW是最新的W版本(扩展的),他们参数有少量差别。

    3:window.h里面包含了windows里面所有的API。

    4:

#include <windows.h>

int main()
{
	MessageBoxW(NULL, L"你好", L"MessageBoxW", MB_YESNO | MB_ICONQUESTION);
	MessageBoxExW(NULL, L"你好", L"MessageBoxExW", MB_YESNO | MB_ICONQUESTION, SUBLANG_DEFAULT);
	//这些API放在user32.dll下面。windows.dll里面没包含了很多的库。

	return 0;
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值