`
sabolasi
  • 浏览: 928157 次
文章分类
社区版块
存档分类
最新评论

Windows编程之基础概念篇

 
阅读更多

一.几个What

什么是API

API是英文 Application Programming Interface 的简称,意为应用程序接口,泛指系统为应用程序提供的一系列接口函数。Windows APIWindows操作系统与应用程序之间的标准接口,它提供了上千个API标准函数、宏和数据结构。在使用VBVCDephi编写应用程序时都可以调用Windows API函数。

什么是SDK

SDK是英文 Software Development Kit 的缩写,软件开发工具包Windows SDK已经封装了API函数,传统Win32 SDK编程方式就是用C语言通过调用API函数按部就班的完成各部分功能。因此,SDK应用程序结构清晰,但程序员必须编写所有代码。初学者最好先进行Win32 SDK编程,直接接触底层代码,以便了解windows的消息运行机制,再慢慢转向MFC编程就容易多了。

什么是MFC

MFC,全称Microsoft Foundation Classes, MFCMicrosoft Foundation Classes)微软基础类库,即把WinAPI进行封装的类库。它是一个类的集合,通过覆盖WinAPI,为编程提供了一个面向对象的界面。它使windows程序员能够利用C++面象对象的特性进行编程,类似BCBOWLDelphiVCL组件。用Visual C++这种开发工具编程时,利用MFC向导生成通用应用程序框架,完成了那些进行SDK编程时最繁琐的部分,使程序员专注于功能模块的实现。MFC程序框架庞大复杂,掩盖了很多技术细节,故初学者如果对C++面向对象机制和Windows运行机制没有深入的理解,是很难驾驭MFC的。由于MFC封装了WinAPI函数,故在进行MFC编程必要时可以直接调用Win32 API函数。不过一般要加上全局作用域符号,例如::MessageBox,,,,),以与int CWnd::MessageBox(,,)区分。

什么是Visual C++

Visual C++不仅是一个C++编译器,而且是一个功能强大的可视化集成开发环境(IDE)。Visual C++的源程序要求使用C++语言编写,并可以使用功能强大的微软基础类库MFC,它可以编制各种类型的Windows应用程序,充分体现了微软的技术精华。

二.几个Concept

1.程序(Program)

程序是计算机的一组指令的集合,它告诉计算机如何实现特殊的功能,经过编译和执行才能最终完成特定的任务。程序设计中的程序=数据结构+算法。通常编写的程序(C程序为例),编辑的.C源文件要经过编译翻译成二进制目标代码,生成.Obj文件,最后将各模块的二进制代码与系统标准模块连接处理后得到具有绝对地址的.exe可执行文件。

2.进程(Progress)

所谓进程就是应用程序的执行实例。Windows是一个多进程的操作系统。进程是程序动态的描述,两者有本质的区别。存储在硬盘上的.exe 可执行文件叫做程序,未执行时它是一个静态的二进制码的文件。一旦双击了exe文件图标运行程序,那个正在运行着程序便称为进程。它在双击的那一刻被系统创建,当你关机或者在任务栏的图标上单击鼠标右键选退出时,进程便消亡,彻底结束了生命。进程经历了由创建消亡的生命期,而程序自始至终存在于你的硬盘上,不管你的机器是否启动。
  3.线程(Thread)

线程是进程中的一个执行单元,同一个进程中的各个线程对应于一组CPU指令、一组CPU寄存器以及一堆栈。进程本来就具有动态的含义,然而实质上是通过线程来执行体现的,从这个意义上说,Windows 中进程的动态性意义已经不是很明显了,只算是给程序所占的资源划定一个范围而已,真正具有动态性意义的是线程。

4.窗口(Windows)

Windows是一个基于图形用户界面的操作系统。窗口是Windows 环境下的应用程序的基本界面单位,它是应用程序与用户之间交互的接口环境,也是系统管理应用程序的基本单位。标准Windows窗口具有工具栏、标题栏、状态栏、最大化、最小化按钮。另外经常用到的对话框等控件是特殊的窗口。编写Windows应用程序首先要创建一个或多个窗口,然后应用程序的执行过程是窗口内部、窗口与窗口之间、窗口与系统之间的数据交互和数据处理。

5.句柄(Handle

句柄是整个Windows编程的基础。它是一个4字节长的整数值,用于标识应用程序中不同对象或同类对象中不同的实例,如一个具体的窗口(HWND),画笔(HPEN),图标(HICON),文件(HFILE),按纽等。

句柄的数据类型在winnt.h中说明如下:typedef void * HANDLE;可以看出句柄是一个泛型(无类型)指针。从物理上看它是一个指针,但从逻辑上看它又不是一个指针,它不是指向一个Windows对象的存储首地址,而是指向包含了使用该内核对象有关信息的一块内存单元,比如PCBTCB,包含对象的地址还有其他相关的信息。调用API(例如CreateProcessCreateThread)创建内核对象时,函数会返回标志此内核对象的句柄。许多API需要句柄作为参数来访问这个句柄所代表的内核对象。

本质上,句柄并不是一个指针,而是一个Index偏移量。每个进程都有一个句柄表,这样这个进程在使用句柄的时候,Windowskernel知道将这个句柄作为Index查询这个句柄表来获得最终的指针。这就是所说的通过句柄获得指针的方式。《Inside Windows 2000》第三章 “object manager”对于handlehandle tablekernel object的关系进行了详细阐述。

Windows窗口句柄通常是全局量,动态建立的Windows窗口对象也是全局性的。所以一个进程或线程可以取得另一个进程或线程的窗口句柄,并给它发送消息。但一个线程只能使用本线程创建的MFC窗口对象,不能使用其它线程创建的MFC窗口对象。

6.事件消息驱动机制

Windows程序与DOS控制台程序有很大的区别。DOS应用程序采用顺序执行过程,而Windows 是一个基于事件的,消息驱动的操作系统。

当发生用户操作键盘、操作鼠标,点击菜单,或者改变窗口的大小等事件时触发一个相应的事件 消息就是描述这些事件发生的信息。当事件发生时,将向适当的窗口发送消息。所有的Windows应用程序都是消息驱动的,消息处理是windows应用程序的核心。MFC应用程序也要处理消息,MFC采用消息宏映射机制。

分享到:
评论

相关推荐

    Windows编程基础.pdf

    学习 Windows Forms 程序基本结构,了解 Windows 窗体的基本概念和设计原则。 WinForm 应用程序的入口点设置 学习如何设置 InitializeComponent() 方法,灵活运用 WinForm C# 开发基本环境。了解 Visual C# 开发...

    windows应用高级编程-C#编程篇

    第1章 Windows编程基础 1.1 Windows和窗体 1.1.1 Windows窗体的概念 1.1.2 System.Windows.Forms命名空间 1.2 Visual Studio.NET IDE简介 1.2.1 解决方案和项目 1.2.2 Toolbox和Properties窗口 1.2.3 动态帮助窗口 ...

    Windows+网络编程之VB篇

    总之,Windows网络编程之VB篇涵盖了从基本的网络概念到实际应用的方方面面。通过学习和实践,开发者可以利用VB这一强大的工具,创造出各种网络应用,满足不同需求。无论是初学者还是有经验的开发者,都可以在这个...

    Windows应用高级编程C编程篇 Windows应用高级编程C编程篇

    在深入探讨Windows应用高级编程C编程篇之前,我们先来明确一下C编程在Windows环境中的基本概念。C语言是一种强大的、通用的编程语言,它的低级特性使得它非常适合用于操作系统编程,包括Windows平台。Windows应用...

    windows网络编程之VB篇

    在Windows平台上进行网络编程,VB(Visual Basic)是一种常见的选择,尤其对于初学者而言,其语法简洁、易懂。...这个压缩包中的“Windows网络编程之VB篇”很可能会包含详细的代码示例,帮助你深入理解和应用这些概念。

    Windows应用高级编程 C#编程篇

    《Windows应用高级编程 C#编程篇》是一本专注于C#技术在Windows桌面应用程序开发中的高级实践指南。这本书深入探讨了如何利用C#语言的强大功能和.NET Framework的丰富特性,来构建高效、稳定且用户友好的Windows应用...

    Windows应用高级编程-C#编程篇(PDF)

    《Windows应用高级编程-C#编程篇》是一本深入探讨如何使用C#语言开发高效、稳定且用户友好的Windows应用程序的专业指南。这本书涵盖了从基础到高级的C#编程技术,特别针对Windows平台进行了深入讲解,旨在帮助开发者...

    VC++技术内幕(windows编程篇)

    总之,《VC++技术内幕(Windows编程篇)》的学习笔记将带你深入理解Windows编程的各个方面,从基本概念到高级技术,全面提升你的Windows应用开发能力。这份笔记不仅覆盖了理论知识,也包含了许多实践经验和技巧,是...

    windows编程入门pdf

    通过上述介绍,我们可以了解到Windows编程的基本概念和技术要点。掌握好API的使用方法以及理解事件驱动的原理,对于编写高质量的Windows应用程序至关重要。希望这篇指南能够帮助初学者顺利入门Windows编程的世界。

    windows应用高级编程-C#编程篇.pdf

    首先,书中详细介绍了C#语言的基础知识,包括变量、数据类型、控制结构(如if语句、for循环、while循环)、函数和类等基本概念。这些是所有C#编程的基石,读者需要牢固掌握,以便后续学习更复杂的主题。 其次,书中...

    Windows API 编程_pdf_windowsAPI编程_

    Windows API编程是Windows平台上开发软件的基础,对于理解和创建高效、稳定的应用程序至关重要。 **1. API函数** Windows API的核心是大量的函数,例如CreateWindow用于创建窗口,SendMessage用于在窗口之间发送...

    Windows 网络编程之VB篇

    《Windows网络编程之VB篇》是一份专注于使用Visual Basic(VB)进行网络编程的资源集合。这份资料可能包含了从基础的网络概念到高级的VB网络应用开发的详细教程,旨在帮助开发者利用VB来构建网络应用程序。 在...

    Windows应用高级编程-C#编程篇 PDF

    总之,《Windows应用高级编程(C#编程篇)》是一本适合有一定C#基础的开发者进阶阅读的书籍,无论你是想提升个人技能,还是准备投身Windows应用开发领域,都能从中受益匪浅。通过深入学习和实践书中的内容,你将能够...

    Windows 网络编程1

    本篇文章将探讨Windows网络编程的一些核心概念、API以及相关工具,帮助读者理解如何在Windows平台上进行网络开发。 首先,Windows网络编程主要基于套接字(Sockets)API,这是一个跨平台的接口,允许程序通过...

    Windows黑客编程基础

    【Windows黑客编程基础】这篇文章实际上并不涉及黑客技术,而是针对编程初学者的一篇入门级教程。作者关注的是如何帮助新手快速理解和掌握Windows平台下的编程基础知识。以下是对文章内容的详细阐述: 1. **编程...

    Windows编程--正五边形

    在本篇文章中,我们将通过一个实践项目来展示 Windows 编程的基本概念和技术。 标题解析 本篇文章的标题是“Windows 编程 -- 正五边形”,这表明我们的目标是使用 Windows 编程技术来绘制一个正五边形图形。 描述...

    WINDOWS之SHELL编程VC篇源码

    总的来说,这个"WINDOWS之SHELL编程VC篇源码"是学习Windows Shell编程的宝贵资源,它涵盖了从基础到进阶的各种应用场景,可以帮助开发者深入理解Windows操作系统的内部工作原理,并提升他们在系统集成和用户界面定制...

    Windows应用高级编程-C#编程篇

    《Windows应用高级编程-C#编程篇》是一本深入探讨如何使用C#语言进行高效Windows应用程序开发的专业书籍。这本书主要针对已经掌握C#基础,并希望通过深入学习来提升Windows应用开发技能的程序员。PDF格式使得读者...

Global site tag (gtag.js) - Google Analytics