LONG biXPelsPerMeter; //位图水平分辨率,每米像素数
LONG biYPelsPerMeter; //位图垂直分辨率,每米像素数
DWORD biClrUserd; // 位图实际使用的颜色表中的颜色数
DWORD biClrImportant; //位图显示过程中重要的颜色数
}BITMAPINFOHEADER;
3.调色板(颜色表)
调色板用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD类型的结构,定义一种颜色。RGBQUAD结构的定义如下:
Typedef struct tagRGBQUAD{
BYTE rgbBlue; //蓝色的亮度(值范围为0-255)
BYTE rgbGreen; //绿色的亮度(值范围为0-255)
BYTE rgbRed; //红色的亮度(值范围为0-255)
BYTE rgbReserved;//保留字,必须为0
}RGBQUAD;
颜色表中RGBQUAN结构数据的个数由bitBitCount来确定:
(1)当bitBitCount=1,4,8时,分别有2,16,256个表项;
(2)当bitBitCount=24时,没有颜色表项。
位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:
Typedef struct tagBIMAPINFO{
BITMAPINFOHEADER bmiHeader; //位图信息头
RGBQUAD bmiColors[1]; //颜色表
}BITMAPINFO;
4.位图数据
位图数据记录了位图的每一个像素值,记录顺序是扫描行内从左到右,扫描行之间从下到上。位图的一个像素值所占的字节数;
(1)当bitBitCount=1时,8个像素占1个字节;
(2)当bitBitCount=4时,2个像素占1个字节;
(3)当bitBitCount=8时,1个像素占1个字节;
(4)当bitBitCount=24时,1个像素占3个字节;
Windows规定下个扫描行所占的字节数必须是4的倍数(即以long为单位),
不足的以0填充,一个扫描行所占的字节数计算方法;
DataSizePerLine=(biWidth * biBitCount + 31)/8; //一个扫描行所占的字节数
DataSizePerLine = DataSizePerLine/4*4;
//字节数必须是4的倍数位图数据的大小(不压缩情况下)
DataSize = DataSizePerLine * biHeight;
3.2 Winsock的网络编程技术
3.2.1 Winsock的基本概念
Window Sockets规范以U.C.Berkely大学BSD UNIX中流行的Sockets接口为范例定义了一套Microsoft Windows下的网络编程接口。它不仅包含了人们所熟悉的Berkeley socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。
Window Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上Window Sockets也定义了一个二进制进口(API),以此来保证应用Window Sockets API的应用程序能够在任何网络软件供应商的符合Window Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。
遵守这套Window Sockets规范的网络软件,我们称之为Window Sockets兼容的,而Window Sockets兼容实现的提供者,我们称之为Window Sockets提供者。一个网络软件供应商必须百分之百地实现Window Sockets规范才能做到与Window Sockets贱人。
任何能够与Window Sockets兼容实现协同工作的应用程序就被认为是具有Window Sockets接口,我们称这种应用程序为Window Sockets应用程序。 VC++局域网远程监控系统的设计与实现(5):http://www.youerw.com/jisuanji/lunwen_9599.html