1.1 Win32程序概述 1
1.2 图形界面编程 1
目录 1
第1章 Windows编程概述 1
1.4 Win32 API概述 7
1.3 消息传递机制 7
1.7 本书示例约定 8
1.6 如何在程序中调用API函数 8
1.5 为什么用API 8
2.2.1 创建普通窗口(CreateWindow、CreateWindowEx) 10
2.2 窗口的创建和撤销 10
第2章 窗口处理 10
2.1 窗口简介 10
2.2.2 关闭窗口(CloseWindow) 19
2.2.3 销毁窗口(DestroyWindow) 20
2.3.1 注册窗口类(RegisterClass、RegisterClassEx) 21
2.3 窗口类操作 21
2.3.2 撤销窗口类(UnregisterClass) 23
2.3.3 获得窗口类信息(GetClassInfoEx) 24
2.3.4 得到指定窗口的窗口类(GetClassName) 25
2.4.1 父子关系(SetParent、GetParent、IsChild) 26
2.4 窗口之间的关系 26
2.4.2 遍历窗口(EnumWindow、EnumWindowProc、EnumChildWindows、EnumChildProc) 29
2.4.3 获取指定的子窗口(ChildWindowFromPoint、ChildWindowFromPointEx) 31
2.4.4 获得特定的窗口(GetWindow、GetTopWindow、GetNextWindow、GetDesktopWindow) 33
2.5.1 获取窗口大小(GetWindowRect、GetClientRect) 37
2.5 窗口的大小、位置和布局 37
2.5.2 调整窗口大小(AdjustWindowRect、AdjustWindowRectEx) 39
2.5.3 设置和获取窗口位置(SetWindowPos) 41
2.5.4 移动窗口位置(MoveWindow) 43
2.5.5 设置和获取窗口布局(SetWindowPlacement、GetWindowPlacement) 44
2.5.6 设置和获得视口坐标起点(SetViewportOrgEx、GetViewportOrgEx) 45
2.5.7 设置和获取视口坐标范围(SetViewportExtEx、GetViewportExtEx) 47
2.5.8 设置和获取窗口坐标起点(SetWindowOrgEx、GetWindowOrgEx) 48
2.5.9 设置和获取窗口坐标范围(SetWindowExtEx、GetWindowExtEx) 50
2.6.1 显示单个窗口(ShowWindow) 51
2.6 显示窗口 51
2.6.2 弹出式窗口(ShowOwnedPopups、GetLastActivePopup) 53
2.6.3 判断各种显示状态(IsIconic、IsWindowVisible、IsZoomed) 55
2.7.1 设置和获取窗口名(SetWindowText、GetWindowText、GetWindowTextLength) 56
2.7 窗口属性 56
2.7.2 设置和获取窗口标记长字(SetWindowLong、GetWindowLong) 58
2.7.3 设置和获取前台窗口(SetForegroundWindow、GetForegroundWindow) 61
2.8.1 创建对话框(DialogBox、CreateDialog、CreateDialogIndirect、Message Box、MessageBoxEx、MessageBoxIndirect) 62
2.8 对话框 62
2.7.4 锁定设置前台窗口(LockSetForegroundWindow) 62
2.8.2 获取控件及其ID(GetDlgItem、GetDlgCtrlID) 71
2.8.3 设置获取控件的显示文本(SetDlgItemText、SetDlgItemInt、GetDlgItemText、GetDlgItemInt) 73
2.8.4 获取下一个TAB控件(GetNextDlgTabItem) 75
2.8.5 对话框过程(DefDlgProc、DialogProc) 76
2.8.7 撤销对话框(EndDialog) 78
2.8.6 对话框坐标和屏幕坐标间的转换(MapDialogRect) 78
2.9.1 查找窗口(FindWindow、FindWindowEx) 79
2.9 其他 79
2.9.3 确定窗口属性(IsWindow、IsWindowUnicode) 81
2.9.2 设置窗口 Z坐标(BringWindowToTop) 81
2.9.4 设置和获取激活态窗口(SetActiveWindow、GetActiveWindow) 83
2.9.5 窗口闪烁(FlashWindow、FlashWindowEx) 84
2.9.6 获取指定点处的窗口(WindowFromPoint) 86
2.9.7 遍历线程所有窗口(EnumThreadWindows、EnumThreadWndProc) 88
3.2.1 创建DC(CreateDC、CreateCompatibleDC) 90
3.2 DC的获取和撤销 90
第3章 设备上下文(DC) 90
3.1 DC简介 90
3.2.2 撤销DC(ReleaseDC、DeleteDC) 92
3.2.3 获得窗口DC(GetWindowDC、GetDC、GetDCEx) 93
3.2.4 保存和恢复DC(SaveDC、RestoreDC) 96
3.3.1 获得DC起始点坐标(GetDCOrgEx) 97
3.3 设置和获取DC的各种属性 97
3.3.2 设置显示配置(ChangeDisplaySettings、ChangeDisplaySettingsEx) 98
3.3.3 遍历显示设备和其配置(EnumDisplayDevices、EnumDisplaySettings) 100
3.3.4 设置和获取DC画刷颜色(SetDCBrushColor、GetDCBrushColor) 102
3.3.5 设置和获取DC画笔颜色(SetDCPenColor、GetDCPenColor) 103
3.3.6 设置和获取DC中各种对象(SelectObject、GetCurrentObject) 104
3.3.7 获取DC中对象的信息(GetObject、GetObjectType、GetStockObject) 106
3.4.1 新建椭圆区域(CreateEllipticRgn、CreateEllipticRgnIndirect) 109
3.4 区域操作 109
3.4.2 新建多边形区域(CreatePolygonRgn、CreatePolyPolygonRgn) 110
3.4.3 新建矩形区域(CreateRectRgn、CreateRectRgnIndirect) 113
3.4.4 新建圆矩形区域(CreateRoundRectRgn) 114
3.4.5 区域之间的操作(EqualRgn、ExcludeUpdateRgn) 115
3.4.6 区域上绘图操作(FillRgn、FrameRgn、InvertRgn、PaintRgn) 117
3.5.1 设置和获取裁剪区域(SelectClipRgn、SelectClipPath、GetClipRgn、ExtSelectClipRgn) 120
3.5 裁剪操作 120
3.5.2 裁剪区域间的运算(ExcludeClipRect、IntersectClipRect、OffsetClipRgn) 124
3.6.1 客户区坐标与屏幕坐标的变换(ClientToScreen、ScreenToClient) 127
3.6 坐标变换 127
3.6.2 设备坐标与逻辑坐标的变换(DPtoLP、LPtoDP) 129
3.6.3 窗口间的坐标变换(MapWindowPoints) 130
3.7.1 创建新调色板(CreatePalette) 131
3.7 颜色和调色板 131
3.7.2 启用调色板(SelectPalette、RealizePalette) 132
3.7.3 设置和获取调色板颜色条目(SetPaletteEntries、GetPaletteEntries) 135
3.7.4 设置系统调色板的工作方式(SetSystemPaletteUse) 136
3.7.5 设置和获取颜色调整(SetColorAdjutstment、GetColorAdjustment) 137
3.8.1 滚动窗口(ScrollDC) 138
3.8 具他 138
3.8.2 偏移操作(OffsetRect、OffsetRgn) 139
3.8.3 点、矩形和区域的关系(PtInRegion、PtVisible、RectInRegion、RectVisible) 141
3.8.4 缩放视口和窗口大小(ScaleViewportExtEx、ScaleWindowExtEx) 144
3.8.5 由给定DC获取相联系的窗口(WindowFromDC) 146
3.8.6 获取特定设备的信息(GetDeviceCaps) 147
3.8.7 撤销DC中的对象(DeleteObject) 150
4.1.1 点(SetPixel、SetPixelV、GetPixel) 151
4.1 基本画图函数 151
第4章 绘图函数 151
4.1.2 线(LineTo、LineDDA、LineDDAProc、MoveToEx、Polyline、PolylineTo) 153
4.1.3 曲线(PolyBezier、PolyBezierTo、PolyDraw) 158
4.1.4 弧(AngleArc、Arc、ArcTo、SetArcDirection、GetArcDirection) 162
4.1.5 椭圆(Ellipse) 166
4.1.6 弦(Chord) 167
4.1.7 矩形(Rectangle、Roundrect、DrawEdge、DrawFocusRect、FillRect) 168
4.1.8 多边形(Polygon、PolyPolygon、PolyPolyline) 173
4.1.9 饼图(Pie) 176
4.2.1 启动和终止路径绘图(BeginPath、EndPath) 178
4.2 路径相关函数 178
4.2.2 曲线到直线(FlattenPath) 179
4.2.3 填充路径(FillPath、StrokeAndFillPath) 180
4.2.4 边界处理(StrokePath、WidenPath) 182
4.2.6 获取路径区域(PathToRegion) 184
4.2.5 封闭路径(CloseFigure) 184
4.2.7 获取路径(GetPath) 185
4.2.8 撤销路径(AbortPath) 186
4.3.1 新建画笔(CreatePen、CreatePenIndirect、ExtCreatePen) 187
4.3 处理DC对象 187
4.3.2 新建画刷(CreateBrushIndirect、CreateHatchBrush、CreateDIBPattemBrushPt、CreatePatternBrush、CreateSolidBrush、GetSysColorBrush) 190
4.3.3 设置和获取背景颜色和模式(GetBkColor、GetBkMode、SetBkColor、SetBkMode) 196
4.4.1 创建图元文件(CreateEnhMetaFile、CreateMetaFile) 199
4.4 图元文件 199
4.4.2 复制图元文件(CopyEnhMetaFile、CopyMetaFile) 201
4.4.3 打开图元文件(GetEnhMetaFile) 202
4.4.4 关闭图元文件(CloseEnhMetaFile、CloseMetaFile) 203
4.4.5 撤销图元文件(DeleteEnhMetaFile、DeleteMetaFile) 204
4.4.6 绘制图元文件(PlayEnhMetaFile) 205
4.5.1 启动和终止绘图(BeginPaint、EndPaint) 206
4.5 其他 206
4.5.2 获取需更新区域(GetUpdateRect、GetUpdateRgn) 207
4.5.3 绘图操作生效(InvalidateRect、InvalidateRgn、ValidateRect、ValidateRgn) 210
4.5.4 设置和获取最大绘图缓冲(GdiSetBatchLimit、GdiGetBatchLimit) 213
4.5.5 刷新缓冲(GdiFlush) 214
4.5.6 设置和获取窗口可绘图区域(SetWindowRgn、GetWindowRgn) 215
4.5.7 禁止在窗口绘图(LockWindowUpdate) 216
4.5.9 更新窗口(RedrawWindow) 218
4.5.8 绘制桌面(PaintDesktop) 218
4.5.10 撤销绘图操作(CancelDC) 219
4.5.11 描绘标准控件(DrawFrameControl) 220
4.5.12 设定画图效果(DrawState、DrawStateProc) 222
4.5.13 设置和获取系统颜色(SetSysColors、GetSysColor) 224
4.5.14 画矩形边框(FrameRect) 226
4.5.15 矩形框颜色反转(InvertRect) 227
5.2.1 创建位(CreateBitmap、CreateBitampIndirect、CreateCompatible、Bitmap、CreateDIBitmap、CreateDIBSection、LoadBitmap、LoadImage) 229
5.2 创建和撤销位图、图标 229
第5章 位图和图标 229
5.1 位图和图标简介 229
5.2.2 创建图标(CreateIcon、LoadIcon、LoadCursorFromFile) 239
5.3.1 设置和获取位图的位数据(SetBitmapBits、GetBitmapBits) 243
5.3 设置和获得位图和图标的各种属性 243
5.2.3 撤销图标(DestoryIcon) 243
5.3.2 设置和获取DIB(SetDIBits、GetDIBits) 245
5.3.3 设置和获取DIB颜色表(SetDIBColorTable、GetDIBColorTable) 248
5.3.4 设置和获取位图的大小(GetBitmapDimensionEx、SetBitmapDimension Ex) 250
5.3.5获取图标信息(GetIconInfo) 252
5.4.1 各种位块操作方式(BitBlt、PatBlt、PlgBlt、StretchBlt、MaskBlt、TransparentBlt) 253
5.4 位块操作 253
5.4.2 设置和获取位操作模式(SetROP2、GetROP2、SetStretchBltMode、GetStretchBltMode) 260
5.5.1 复制位图和图标(CopyImage、CopyIcon) 263
5.5 其他 263
5.5.2 从文件中搜寻图标(ExtractIcon、ExtractIconEx、ExtractAssociatedIcon) 265
5.5.3 显示图标(DrawIcon、DrawIconEx) 268
6.1.1 生成新菜单(CreateMenu、CreatePopupMenu) 270
6.1 菜单的简单操作 270
第6章 菜单处理 270
6.1.2 装载菜单(LoadMenu、LoadMenuIndirect) 272
6.1.3 撤销菜单(DestoryMenu、DeleteMenu、RemoveMenu) 274
6.1.4 获取菜单(GetMenu、GetSubMenu、GetSystemMenu) 276
6.1.5 增添菜单(AppendMenu) 278
6.2.1 设置和获取菜单项信息(SetMenuItemInfo、GetMenuItemInfo) 280
6.2 菜单项处理 280
6.2.2 设置和获取缺省菜单项(SetMenuDefautlItem、GetMenuDefaultItem) 282
6.2.3 获取菜单项的ID(GetMenuItemID) 284
6.2.4 获取菜单项数(GetMenuItemCount) 285
6.2.5 获取菜单项的范围大小(GetMenuItemRect) 286
6.2.6 高亮显示菜单项(HiliteMenuItem) 287
6.2.7 菜单项属性(CheckMenuItem、EnableMenuItem、CheckMenuRadioItem) 288
6.2.8 添加菜单项(InsertMenuItem) 291
6.2.9 获取某点处的菜单项(MenuItemFromPoint) 292
6.3.1 设置窗口的菜单(SetMenu) 293
6.3 其他 293
6.3.3 上下文菜单(TrackPopupMenu、TrackPopupMenuEx) 294
6.3.2 判定句柄是否指向菜单(IsMenu) 294
6.3.4 显示菜单条(DrawMenuBar) 297
6.3.5 图形菜单项(SetMenuItemBitmaps) 298
7.1.1 获取内存当前状态信息(GlobalMemoryStatus、GlobalMemoryStatusEx) 300
7.1 内存管理函数 300
第7章 内存处理 300
7.1.2 复制内存块(CopyMemory) 302
7.1.3 移动内存块(MoveMemory) 303
7.1.4 使用一个值填充内存块(FillMemory) 304
7.1.5 用0填充内存块(ZeroMemory、SecureZeroMemory) 305
7.1.6 检查指定内存块的操作权(IsBadCodePtr、IsBadReadPtr、IsBadWritePtr、IsBadStringPtr) 306
7.2.1 全局内存的分配和释放(GlobalAlloc、GlobalReAlloc、GlobalFree、GlobalDiscard) 309
7.2 全局内存管理函数 309
7.2.2 获取全局内存的句柄(GlobalHandle) 312
7.2.4 锁定和解锁全局内存(GlobalLock、GlobalUnlock) 313
7.2.3 获取指定全局内存块大小(GlobalSize) 313
7.3.1 本地内存的分配和释放(LocalAlloc、LocalReAlloc、LocalFree、LocalDiscard) 315
7.3 本地内存管理函数 315
7.3.2 获取本地内存的句柄(LocalHandle) 317
7.3.3 获取指定本地内存块大小(LocalSize) 318
7.3.4 锁定和解锁本地内存(LocalLock、LocalUnlock) 319
7.4.1 获得当前进程的堆(GetProcessHeap、GetProcessHeaps) 320
7.4 堆函数 320
7.4.2 创建和释放堆(HeapCreate、HeapDestroy) 322
7.4.3 在堆中分配和释放内存(HeapAlloc、HeapReAlloc、HeapFree) 324
7.4.4 获得指定堆中内存块的大小(HeapSize) 328
7.4.6 检查堆(HeapValidate) 329
7.4.5 试图合并堆内相邻的自由内存块(HeapCompact) 329
7.4.7 枚举指定堆中的内存块(HeapWalk) 330
7.4.8 锁定和释放堆(HeapLock、HeapUnlock) 331
7.5.1 虚拟内存的分配和释放(VirtualAlloc、VirtualAllocEx、VirtualFree、VirtualFreeEx) 332
7.5 虚拟内存管理 332
7.5.2 改变虚拟内存区域保护规范(VirtualProtect、VirtualProtectEx) 339
7.5.3 锁定和解锁指定区域的虚拟内存(VirtualLock、VirtualUnlock) 341
8.1.1 创建文件(CreateFile、lcreat、GetTempFileName) 344
8.1 创建、读写和撤销文件 344
第8章 文件处理 344
8.1.2 重新打开文件(ReOpenFile) 348
8.1.3 设置文件读写位置(SetFilePointer、llseek、lseek) 350
8.1.4 写入文件(WriteFile、1write、hwirte) 353
8.1.5 异步写入文件(WriteFileEx、FileIOCompletionRoutine) 355
8.1.6 读入文件(ReadFile、lread、hread) 357
8.1.7 异步读入文件(ReadFileEx) 359
8.1.8 复制文件(CopyFile、CopyFileEx、CopyProgressRoutine) 360
8.1.9 更改文件名(MoveFile、MoveFileEx) 363
8.1.10 关闭文件(CloseHandle、lclose) 365
8.1.11 删除文件(DeleteFile) 366
8.2.1 获取文件大小(GetFileSize、GetFileSizeEx) 367
8.2 设置和获得文件的各种信息 367
8.2.2 获取文件类型(GetFileType) 369
8.2.3 设置和获取文件时间信息(SetFileTime、GetFileTime) 370
8.2.4 获取文件版本信息(GetFileVersionInfo、 GetFileVersionInfoSize、VerQueryValue) 372
8.2.5 是否可执行文件(GetBinaryType) 374
8.2.6 长文件名和短文件名的转换(GetFullPathName、GetShortPathName) 375
8.2.7 由文件句柄获取文件信息(GetFileInformationByHandle) 377
8.2.8 设置文件结束标志(SetEndOfFile) 378
8.2.9 设置和获取文件属性(SetFileAttributes、 GetFileAttributes、GetFileAttributesEx) 379
8.3.1 创建新目录(CreateDirectory、CreateDirectoryEx) 382
8.3 目录处理 382
8.3.2 删除目录(RemoveDirectory) 383
8.3.3 获取系统路径(GetSystemDirectory) 384
8.3.4 获取临时路径(GetTempPath) 385
8.3.5 获取Windows完整目录(GetWindowsDirectory) 386
8.3.6 设置和获取当前目录(SetCurrentDirectory、GetCurrentDirectory) 387
8.4.1 查找第一个文件(FindFirstFile、FindFirstFileEx) 389
8.4 文件查找 389
8.4.2 查找下一个文件(FindNextFile) 391
8.4.3 查找指定文件(SearchPath) 392
8.4.4 查找结束(FindClose) 393
8.5.1 查找第一个文件夹改变(FindFirstChangeNotifycation) 394
8.5 文件夹改变 394
8.5.3 结束查找文件夹改变(FindCloseChangeNotifycation) 397
8.5.2 查找下一个文件(FindNextChangeNotifycation) 397
8.5.4 获得文件夹改变信息(ReadDirectoryChangesW) 398
8.6.1 查找第一个卷(FindFirstVolume) 400
8.6 磁盘卷查找 400
8.6.3 查找卷结束(FindVolumeClose) 402
8.6.2 查找下一个卷(FindNextVolume) 402
8.7.1 获取可用逻辑驱动器(GetLogicalDrives) 403
8.7 磁盘信息 403
8.7.2 获取可用逻辑驱动器信息(GetLogicalDriveStrings) 404
8.7.3 设置和获取卷标信息(SetVolumeLabel、GetVolumeInformation) 405
8.7.4 获取磁盘空闲空间(GetDiskFreeSpace、GetDiskFreeSpaceEx) 407
8.7.5 获取磁盘类型(GetDriveType) 410
AreFileApisANSI) 411
8.8.1 设置和获取字符集(SetFileApisToANSI、SetFileApisToOEM、 411
8.8 其他 411
8.8.2 联系文件和I/O端口(CreateloCompletionPort、PostQueuedCompletion Status、GetQueuedCompletionStatus) 413
8.8.3 更新文件缓冲区(FlushFileBuffers) 416
8.8.4 加锁和解锁文件(LockFile、LockFileEx、UnlockFile、UnlockFileEx) 417
8.8.5 比较文件时间信息(CompareFileTime) 421
8.8.6 DOS时间转换为Win32时间(DosDateTimeToFileTime) 422
8.8.7 Win32时间转换为Dos时间(FileTimeToDosDateTime) 423
8.8.8 Win32时间转换本地时间(FileTimeToLocalFileTime) 424
9.1.1 显示文本(DrawText、DrawTextEx、TextOut、ExTextOut、TabbedTextOut、GrayString、OutputProc、PolyTextOut) 426
9.1 文本 426
第9章 处理文本和字体 426
9.1.2 设置和获取文本属性(SetTextAlign、GetTextAlign、SetTextColor、GetTextColor) 436
9.1.3 调整和获取字符间距(SetTextCharacterExtra、GetKerningPairs) 440
9.1.4 获得字符串的宽和高(GetTextExtentPoint32、GetTabbedTextExtent) 442
9.1.5 获取字符串的信息(GetCharacterPlacement) 445
9.1.6 调整字符串(SetTextJustification) 446
9.2.1 创建新字体(CreateFont、CreateFontIndirect、CreateScalableFontResource) 447
9.2 字体 447
9.2.2 在系统中添加和删除字体(AddFontResource、RemoveFontResource) 453
9.2.3 获取字体的宽度(GetCharABCWidths、GetCharWidth、GetCharWidth32、GetCharWidthFloat、GetCharaABCWidthsFloat) 455
9.2.4 获取字体的各种信息(GetTextMetric、GetFontLanguageInfo) 460
9.2.5 字体的宽高比(GetAspectRatioFilterEx、SetMapperFlags) 461
9.2.6 获取字体的字型名(GetTextFace) 463
9.2.7 遍历系统字体(EnumFontFamiliesEx、EnumFontFamiExProc) 464
10.1.1 设置和获取键盘布局(ActivateKeyboardLayout、GetKeyboardLayout、GetKeyboardLayoutList、GetKeyboardLayoutName) 467
10.1 键盘 467
第10章 硬件和系统 467
10.1.2 装载和卸载键盘布局(LoadKeyBoardLayout、UnloadKeyBoardLayout) 471
10.1.3 获得和设置键盘状态(GetKeyboardState、SetKeyboardState) 474
10.1.4 获得键盘类型(GetKeyboardType) 477
10.1.5 获得按键名(GetKeyNameText) 478
10.1.6 获得按键状态(GetKeyState、GetAsyncKeyState) 479
10.1.7 虚拟按键到扫描码(MapVirtualKey、MapVirtualKeyEx) 482
10.1.8 虚拟按键到ASCII码(ToAscii、ToAsciiEx) 484
10.1.9 虚拟按键到Unicode(ToUnicode、ToUnicodeEx) 487
10.1.10 字符到虚拟按键(VkKeyScan、VkKeyScanEx) 489
10.1.11 注册和撤销系统热键(RegisterHotKey、UnregisterHotKey) 491
10.1.12 插入键盘事件(SendInput、keybd event) 493
10.2.1 获得鼠标输入点序列(GetMouseMovePoints) 495
10.2 鼠标 495
10.2.2 获得和设置双击间隔(GetDoubleClickTime、SetDoubleClickTime) 496
10.2.3 鼠标左右键设置(SwapMouseButton) 497
10.2.4 鼠标捕获和释放(SetCapture、GetCapture、ReleaseCapture) 498
10.2.5 捕获离开和滑过事件(TrackMouseEvent) 500
10.2.6 插入鼠标事件(mouse event) 501
10.3.1 新建和撤销光标(CreateCursor、LoadCursorFromFile、DestroyCursor) 502
10.3 光标 502
10.3.2 设置和获取光标(SetCursor、GetCursor) 506
10.3.3 设置和获取光标位置(SetCursorPos、GetCursorPos) 508
10.3.4 设置和获取光标活动范围(ClipCursor、GetClipCursor) 509
10.3.5 显示光标(ShowCursor) 511
10.3.6 设置系统光标(SetSystemCursor) 512
10.4.1 设置和获取系统时间(SetSystemTime、GetSystemTime、GetSystemTimeAsFileTime) 513
10.4 时钟 513
10.4.2 设置和获取当地时间(SetLocAltime、GetLocAltime) 516
10.4.3 获取自启动以来的微秒数(GetTickCount) 517
10.4.4 获取和设置系统调整时间(GetSystemTimeAdjustment、SetSystemTimeAdjustment) 518
10.4.5 设置和获取时区信息(SetTimeZoneInformation、GetTimeZoneInformation) 520
10.4.6 获取高精度时间(QueryPerformanceCounter、QueryPerformance Frequency) 522
10.4.7 设置定时器(SetTimer) 523
10.4.9 撤销定时器(KillTimer) 525
10.4.8 设置定时器回调函数(TimerProc) 525
10.5.1 获取系统各种度量信息(GetSystemMetrics) 526
10.5 系统信息 526
10.5.2 设置和获取系统参数(SystemParametersInfo) 529
10.5.3 确定处理器的特性(IsProcessorFeaturePresent) 534
10.5.4 获取和设置计算机名(GetComputerName、SetComputerName) 535
10.5.5 获取用户名(GetUserName) 536
10.5.6 获取操作系统版本信息(GetVersionEx) 537
10.5.7 获取系统信息(GetSystemInfo) 538
11.2.1 发送消息(SendMessage、SendMessageCallback、SendNotifyMessage、SendMessageTimeout、PostThreadMessage、PostMessage、PostQutiMessage、BroadcastSystemMessage) 539
11.2 消息处理 539
第11章 Windows消息 539
11.1 消息系统概述 539
11.2.2 回复消息(ReplyMessage) 549
11.2.3 获取消息(GetMessage、WaitMessage、PeekMessage) 550
11.2.4 处理消息(TranslateMessage、DispatchMessage) 553
11.2.5 获取消息的伴随信息(GetMessagePos、GetMessageTime) 555
11.2.6 注册新窗口消息(RegisterWindowMessage) 557
11.3.1 获取队列状态(GetQueueStatus) 558
11.3 消息队列 558
11.3.2 获取队列中输入消息状态(GetInputState) 559
12.2.1 获取最近的错误代码(GetLastError) 561
12.2 错误处理 561
第12章 调试和错误处理 561
12.1 调试 561
12.2.2 设置最近的错误代码(SetLastError) 562
12.2.3 设置最近的错误代码(SetLastErrorEx) 563
12.2.5 播放简单声音(Beep) 564
12.2.4 致命的应用程序退出(FatalAppExit) 564
12.2.6 播放特定类型声音(MessageBeep) 565
12.2.7 格式化错误消息(FormatMessage) 566
12.3.1 报告日志(RegisterEventSource、DeregisterEventSource、ReportEvent) 568
12.3 事件日志 568
12.3.2 读取日志(OpenEventLog、CloseEventLog、ReadEventLog) 571
12.3.3 查询日志(GetNumberOfEventLogRecords) 574
12.3.4 清空日志(ClearEventLog) 576
13.2.1 建立连接(RasDial、RasDailFunc/RasDialFunc1/RasDialFunc2) 577
13.2 远程连接 577
第13章 远程访问服务 577
13.1 远程访问服务概述 577
13.2.2 关闭连接(RasHangUp) 585
13.2.3 连接状态通知(RasConnectionNotification) 586
13.3.1 遍历活动连接(RasEnumConnections) 588
13.3 连接管理 588
13.3.2 获取连接状态(RasGetConnectStatus) 590
13.4.1 添加、修改条目(RasSetEntryProperties) 591
13.4 电话簿 591
13.4.2 获取条目属性(RasGetEntryProperties) 594
13.4.3 重命名条目(RasRenameEntry) 596
13.4.4 删除条目(RasDeleteEntry) 597
13.4.5 遍历条目(RasEnumEntries) 598
获取特定RAS错误代码的字符串(RasGetErrorString) 601
13.5 其他 601
14.2.1 初始化WinSock DLL(WSAStartup) 603
14.2 WinSock DLL 603
第14章 Windows套接字 603
14.1 WinSock概述 603
14.2.2 释放WinSock DLL资源(WSACleanup) 604
14.3.1 创建套接字(socket) 605
14.3 套接字 605
14.3.2 从容关闭套接字(shutdown) 606
14.4.1 绑定(bind) 607
14.4 服务器端 607
14.3.3 关闭套接字(closesocket) 607
14.4.2 监听(1isten) 608
14.4.3 接受(accept) 609
创建连接(connect) 610
14.5 客户端 610
14.6.1 发送数据(send) 611
14.6 数据传输 611
14.6.2 发送数据到(sendto) 612
14.6.3 接收数据(recv) 614
14.6.4 接收数据来自(recvfrom) 615
14.7.1 获取对方的套接字地址信息(getpeername) 616
14.7 套接字地址信息 616
14.7.2 获取本地的套接字地址信息(getsockname) 617
获取最近的错误代码(WSAGetLastError) 618
14.8 其他 618
BITMAP 620
ABC 620
附录A 数据结构 620
BITMAPCOREHEADER 621
BITMAPCOREINFO 622
BITMAPINFO 623
BITMAPFILEHEADER 623
BITMAPINFOHEADER 624
CHOOSECOLOR 627
CHOOSEFONT 628
COLORREF 630
CLIENTCREATESTRUCT 630
COMPAREITEMSTRUCT 631
CREATESTRUCT 632
CONSOLE_SCREEN_BUFFER_INFO 632
DEBUG_EVENT 633
DELETEITEMSTRUCT 634
DLGITEMTEMPLATE 635
DLGTEMPLATE 636
DRAWITEMSTRUCT 637
FINDREPLACE 638
FILETIME 638
ICONINFO 640
HANDLETABLE 640
FIXED 640
INPUT_RECORD 641
LOGBRUSH 642
KERNINGPAIR 642
LOGFONT 643
LOGPALETTE 645
MDICREATESTRUCT 646
MAT2 646
LUID_AND_ATTRIBUTES 646
MEASUREITEMSTRUCT 647
MENUITEMTEMPLATE 648
METAFILEPICT 649
MENUITEMTEMPLATEHEADER 649
MSG 650
MOUSEHOOKSTRUCT 650
NEWTEXTMETRIC 651
MULTIKEYHELP 651
OFSTRUCT 653
OPENFILENAME 654
PAINTSTRUCT 657
OVERLAPPED 657
PANOSE 658
PALETTEENTRY 658
POINT 661
PROCESS_INFORMATION 662
POINTS 662
RGBTRIPLE 663
RGBQUAD 663
RECT 663
STARTUPINFO 664
SYSTEM_INFO 666
SYSTEMTIME 667
TEXTMETRIC 668
WIN32_FIND_DATA 670
WNDCLASS 671
WM_CANCELMODE 673
WM_ACTIVATEAPP 673
附录B Windows消息 673
WM_ACTIVATE 673
WM_CLOSE 674
WM_CHILDACTIVATE 674
WM_CHAR 674
WM_COMPAREITEM 675
WM_COMPACTING 675
WM_COMMAND 675
WM_CTLCOLORBN 676
WM_CREATE 676
WM_CTLCOLORSCROLLBAR 677
WM_CTLCOLORLISTBOX 677
WM_CTLCOLORDLG 677
WM_DEADCHAR 678
WM_CTLCOLORSTATIC 678
WM_DEVMODECHANGE 679
WM_DESTORY 679
WM_DELETEITEM 679
WM_ENABLE 680
WM_DROPFILES 680
WM_DRAWITEM 680
WM_FONTCHANGE 681
WM_ERASEBKGND 681
WM_ENTERIDLE 681
WM_GETHOTKEY 682
WM_GETFONT 682
WM_GETDLGCODE 682
WM_GETTEXT 683
WM_GETMINMAXINFO 683
WM_HSCROLL 684
WM_HOTKEY 684
WM_GETTEXTLENGTH 684
WM_INITDIALOG 685
WM_ICONERASEKGND 685
WM_KEYDOWN 686
WM_INITMENUPOPUP 686
WM_INITMENU 686
WM_KILLFOCUS 687
WMVKEYUP 687
WM_LBUTTONDOWN 688
WM_LBUTTONDBLCLK 688
WM_MBUTTONBLCLK 689
WM_LBUTTONUP 689
WM_MDIACTIVATE 690
WM_MBUTTONUP 690
WM_MBUTTONDOWN 690
WM_MDICREATE 691
WM_MDICASCADE 691
WM_MDIMAXIMIZE 692
WM_MDIICONARRANGE 692
WM_MDIDESTORY 692
WM_MDIGETACTIVE 692
WM_MDISETMENU 693
WM_MDIRESTORE 693
WM_MDINEXT 693
WM_MENUCHAR 694
WM_MEASUREITEM 694
WM_MDITILE 694
WM_MOUSEACTIVE 695
WM_MENUSELECT 695
WM_MOUSEWHEEL 696
WM_MOUSEMOVE 696
WM_NCACTIVATE 697
WM_MOVING 697
WM_MOVE 697
WM_NCDESTORY 698
WM_NCCREAT E 698
WM_NCCALCSIZE 698
WM_NCHITTEST 699
WM_NCMBUTTONDBLCLK 700
WM_NCLBUTTONUP 700
WM_NCLBUTTONDBLBLK 700
WM_NCLBUTTONDOWN 700
WM_NCMOUSEMOVE 701
WM_NCMBUTTONUP 701
WM_NCMBUTTONDOWN 701
WM_NCRBUTTONDOWN 702
WM_NCRBUTTONDBLCLK 702
WM_NCPAINT 702
WM_NEXTMENU 703
WM_NEXTDLGCTL 703
WM_NCLBUTTONUP 703
WM_PALETTECHANGED 704
WM_PAINTTICON 704
WM_PAINT 704
WM_PARENTNOTIFY 705
WM_PALETTECHANGING 705
WM_POWERBROADCAST 706
WM_POWER 706
WM_QUERYOPEN 707
WM_QUERYNEWPALETTE 707
WM_QUERYDRAGICON 707
WM_RBUTTONDOWN 708
WM_RBUTTONDBLCLK 708
WM_QUIT 708
WM_SETFOCUS 709
WM_SETCURSOR 709
WM_RBUTTONUP 709
WM_SETHOTKOY 710
WM_SETFONT 710
WM_SETREDRAW 711
WM_SETICON 711
WM_SIZE 712
WM_SHOWWINDOW 712
WM_SETTEXT 712
WM_STYLECHANGED 713
WM_SIZING 713
WM_SYSCOLORCHANGE 714
WM_SYSCHAR 714
WM_STYLECHANGING 714
WM_SYSCOMMAND 715
WM_SYSKEYUP 716
WM_SYSKEYDOWN 716
WM_TIMER 717
WM_TIMECHANGE 717
WM_USERCHANGED 718
WM_USER 718
WM_UNDO 718
WM_WINDOWPOSCHANGING 719
WM_WINDOWPOSCHANGED 719
WM_VSCROLL 719
COLORREF 721
附录C 类型与宏 721
LOBYTE 722
HIWORD 722
HIBYTE 722
max 723
MAKELONG 723
LOWORD 723
MAKEINTATOM 724
min 724
MAKELRESULT 725
MAKELPARAM 725
MAKEINTRESOURCE 725
PALETTEINDEX 726
MAKEWPARAM 726
MAKEWORD 726
RGB 727
PALETTERGB 727