结 构 、 风 格 、 回 调 函 数 和 消 息 映 射

这 个 部 分 描 述 了 微 软 基 础 类 库 使 用 的 结 构 , 风 格 和 回 调 函 数 , 还 描 述 了 MFC

的 消 息 映 射 。

MFC 使 用 的 结 构

这 个 主 题 后 面 是 对 不 同 成 员 函 数 调 用 的 结 构 的 描 述 。 有 关 每 个 结 构 的 用 法 的 进一 步 信 息 参 看 每 个 结 构 的 “ 请 参 阅 ” 列 表 中 列 出 的 类 和 成 员 函 数 。

ABC 结 构

ABC 结 构 具 有 如 下 形 式 :

typedef struct _ABC { /* abc */ int abcA;

UINT abcB;

int abcC;

} ABC;

ABC 结 构 包 含 了 TrueType 字 体 中 字 符 的 宽 度 。

成 员

abcA abcB abcC

指 定 了 字 符 的 A 宽 度 。 A 宽 度 是 指 画 出 的 字 符 图 形 离 当 前 位 置 的 距 离 。指 定 了 字 符 的 B 宽 度 。 B 宽 度 是 指 画 出 的 字 符 图 形 的 宽 度 。

指 定 了 字 符 的 C 宽 度 。 C 宽 度 是 指 加 在 当 前 位 置 上 的 距 离 , 用 于 提 供 字符 图 形 右 边 的 空 白 。

注 释

字 符 的 总 宽 度 是 A , B 和 C 宽 度 的 总 和 。 A 或 C 宽 度 都 可 以 是 负 的 , 指 明 上 悬或 下 垂 。

请 参 阅 CDC::GetCharABCWidths

ABCFLOAT 结 构

ABCFLOAT 结 构 具 有 如 下 形 式 :

typedef struct _ABCFLOAT { /* abcf */ FLOAT abcfA;

FLOAT abcfB;

FLOAT abcfC;

} ABCFLOAT;

ABCFLOAT 结 构 包 含 了 字 符 的 A , B 和 C 宽 度 。

成 员

abcfA abcf B abcf C

指 定 了 字 符 的 A 宽 度 。 A 宽 度 是 指 画 出 的 字 符 图 形 离 当 前 位 置 的 距 离 。指 定 了 字 符 的 B 宽 度 。 B 宽 度 是 指 画 出 的 字 符 图 形 的 宽 度 。

指 定 了 字 符 的 C 宽 度 。 C 宽 度 是 指 加 在 当 前 位 置 上 的 距 离 , 用 于 提 供 字符 图 形 右 边 的 空 白 。

A , B 和 C 宽 度 是 根 据 字 体 的 基 准 线 测 量 的 。 字 符 的 增 量 ( 总 宽 度 ) 是 A , B

和 C 宽 度 的 总 和 。 A 或 C 宽 度 都 可 以 是 负 数 , 表 明 上 悬 或 下 垂 。

请 参 阅 CDC::Get CharABCWidths

AFX_EXTENSION_MODULE 结 构

AFX_EXTENSION_MODULE 结 构 具 有 如 下 形 式 :

struct AFX_EXTENSION_MODULE

{

BOOL bInitialized; HMODULE hModule; HMODULE hResource;

CRuntimeClass* pFirstSharedClass; COleObjectFactory* pFirstSharedFactory;

};

AFX_EXTENSION_MODULE 被 用 在 MFC 扩 展 DLL 的 初 始 化 过 程 中 , 用 于 保存 扩 展 DLL 模 块 的 状 态 。

bInitialized

如果 DLL 模 块 已 经 用 AfxInitExtensionModule 初 始 化 了 , 则 为 TRU E 。

hModule

指 定 了 DLL 模 块 的 句 柄 。

hResource

指 定 了 DLL 的 自 定 义 资 源 模 块 的 句 柄 。

pFirstSharedClass

指 向 有 关 DLL 模 块 的 第 一 个 运 行 时 类 的 信 息 ( CRuntimeClass 结 构 ) 的指 针 。 用 于 提 供 运 行 时 类 列 表 的 开 始 部 分 。

pFirstSharedFactory

指向 DLL 模 块 的 第 一 个 对 象 工 厂 ( COleObjectFactory 对 象 ) 的 指 针 。 用于 提 供 类 工 厂 列 表 的 开 始 部 分 。

注 释

MFC 扩 展 DLL 需 要 在 它 们 的 D llM ain 函 数 中 做 两 件 事 情 :

  • 调用 AfxInitExtensionModule 并 检 查 返 回 值 。

  • 如果 DLL 要 引 出 CRuntimeClass 对 象 或 者 拥 有 它 自 己 的 资 源

    , 就 创 建 一 个

CDynLinkLibrary 对 象 。

AFX_EXTENSION_MODULE 结 构 被 用 于 保 存 扩 展 DLL 模 块 状 态 的 一 个 备 份 , 包 括 运 行 时 对 象 的 一 个 拷 贝 , 它 已 经 在 进 入 D llM ain 函 数 之 前 被 扩 展 DLL 作 为常 规 静 态 对 象 构 造 过 程 的 一 部 分 初 始 化 过 了 。 例 如 :

static AFX_EXTENSION_MODULE extensionDLL; extern "C" int APIENTRY

D llM ain(HINSTANCE hInstance, DWORD dwReason, LPVOID)

{

// 初 始 化 这 个 DLL 的 扩 展 模 块

VERIFY(AfxInitExtensionModule(extensionDLL, hInstance)); AFX_EXTENSION_MODULE 结 构 中 保 存 的 模 块 信 息 可 以 被 拷 贝 到CDynLinkLibrary 对 象 中 。 例 如 :

// CDynLinkLibrary 类

IMPLEMENT_DYNAMIC(CDynLinkLibrary, CCmdTarget)

// 构 造 函 数

CDynLinkLibrary::CDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)

{

#ifndef _AFX_NO_OLE_SUPPORT m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));

#endif

m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));

// 从 AFX_EXTENSION_MODULE 结 构 中 拷 贝 信 息

ASSERT(state.hModule != NULL); m_hModule = state.hModule; m_hResource = state.hResource;

m_classList.m_pHead = state.pFirstSharedClass;

#ifndef _AFX_NO_OLE_SUPPORT m_factoryList.m_pHead = state.pFirstSharedFactory;

#endif

m_bSystem = bSystem;

请 参 阅 AfxInitExtensionModule, AfxTermExtensionModule

BITMAP 结 构

BITMAP 结 构 具 有 如 下 形 式 :

typedef struct tagBITMAP { /* bm */ int bmType;

int bmWidth;

int bmHeight;

int bmWidthBytes; BYTE bmPlanes;

BYTE bmBitsPixel; LPVOID bmBits;

} BITMAP;

BITMAP 结 构 定 义 了 逻 辑 位 图 的 高 , 宽 , 颜 色 格 式 和 位 值 。

成 员

bmType

指 定 了 位 图 的 类 型 。 对 于 逻 辑 位 图 , 这 个 成 员 必 须 为 0 。

bmWidth

指 定 了 位 图 的 宽 度 , 以 像 素 为 单 位 。 宽 度 必 须 大 于 0 。

bmHeight

指 定 了 位 图 的 高 度 , 以 扫 描 行 为 单 位 。 高 度 必 须 大 于 0 。

bmWidthBytes

指 定 了 每 个 扫 描 行 中 字 节 的 数 目 。 这 个 值 必 须 是 个 偶 数 , 因 为 图 形 设 备接 口( GD I ) 假 定 位 图 中 的 位 值 构 成 一 个 整 数( 2 字 节 ) 数 组 。 换 句 话 说 , bmWidthBytes*8 必 须 是 16 的 倍 数 , 大 于 或 等 于 bmWidth 与 bmBitsPixel 相 乘 所 得 的 值 。

bmPlanes

指 定 了 位 图 中 颜 色 平 面 的 数 目 。

bmBits

指 定 了 每 个 位 平 面 中 用 于 定 义 一 个 像 素 所 需 的 颜 色 位 数 。

指 向 位 图 中 位 值 的 位 置 。 bmBits 成 员 必 须 是 一 个 指 向 单 字 节 数 组 的 长 指针。

注 释

现 在 使 用 的 位 图 格 式 有 单 色 的 和 彩 色 的 。 单 色 的 位 图 使 用 每 个 位 平 面 一 位 的 格式 。 每 个 扫 描 线 是 16 的 倍 数 。

对 于 一 个 高 度 为 n 的 单 色 位 图 , 扫 描 线 是 按 照 如 下 方 式 组 织 的 :

Scan 0

Scan 1

.

.

.

Scan n-2 Scan n-1

单 色 设 备 上 的 像 素 不 是 黑 就 是 白 。 如 果 位 图 中 对 应 的 位 是 1 , 则 像 素 就 被 打 开

( 白 ) 。 如 果 对 应 的 位 是 0 , 则 像 素 被 关 闭 ( 黑 ) 。

员 函 数 的 RASTERCAPS 索 引 中 设 置 的 。

每 个 设 备 都 有 它 自 己 的 颜 色 格 式 。为 了 在 不 同 的 设 备 间 传 递 位 图 ,使 用 W indows

的 GetDIBits 和 SetDIBits 函 数 。

请 参 阅 CBitmap::CreateBitmapIndirect

BITMAPINFO 结 构

BITMAPINFO 结 构 具 有 如 下 形 式 :

typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1];

} BITMAPINFO;

BITMAPINFO 结 构 定 义 了 W indows 设 备 无 关 位 图 ( DIB ) 的 度 量 和 颜 色 信 息 。

成 员

bmiHeader

指 定 了 一 个 BITMAPINFOHEADER 结 构 , 包 含 了 有 关 设 备 相 关 位 图 的度 量 和 颜 色 格 式 的 信 息 。

指 定 了 一 个 RGBQUAD 或 DWORD 数 据 类 型 的 数 组 , 定 义 了 位 图 中 的颜 色 。

注 释

设 备 无 关 位 图 由 两 个 部 分 组 成 : 一 个 BITMAPINFO 结 构 , 描 述 了 位 图 的 度 量和 颜 色 信 息 ; 一 个 字 节 数 组 , 定 义 了 位 图 的 像 素 。 数 组 中 的 字 节 被 组 合 在 一 起 , 但 是 每 个 扫 描 行 必 须 用 零 填 补 , 在 一 个 LONG 边 界 结 束 。 如 果 高 度 为 正 的 , 位图 的 起 始 位 置 在 左 下 角 。 如 果 高 度 为 负 , 起 始 位 置 在 左 上 角 。

BITMAPINFOHEADER 结 构 中 的 biBitCount 成 员 决 定 了 定 义 像 素 的 位 数 以 及 位图 中 的 最 大 颜 色 数 。 这 个 成 员 可 以 是 下 列 值 之 一 :

  • 位 图 是 单 色 的 , bmiColors 成 员 包 含 两 个 入 口 。 位 图 数

    组 中 的 每 一 位 代 表 一个 像 素 。 如 果 该 位 被 清 除 , 则 用 bmiColors 表 中 的 第 一 种 颜 色 显 示 该 像 素 。如 果 该 位 被 置 位 , 则 用 表 中 的 第 二 种 颜 色 显 示 该 像 素 。

  • 位 图 最 多 有 16 种 颜 色 , bmiColors 成 员 中 包 含 了 最 多 可

    达 16 个 入 口 。 位 图中 的 每 个 像 素 用 一 个 4 位 的 值 来 表 示 , 该 值 用 作 颜 色 表 的 索 引 。 例 如 , 如果 位 图 中 的 第 一 个 字 节 是 0x1F , 这 个 字 节 代 表 两 个 像 素 。 第 一 个 像 素 包 含了 颜 色 表 中 第 二 种 颜 色 , 第 二 个 像 素 包 含 了 颜 色 表 中 第 十 六 种 颜 色 。

  • 位 图 最 多 有 256 种 颜 色 , bmiColors 成 员 包 含 了 多 达 256 个

    入 口 。 在 这 种 情况 下 , 数 组 中 的 每 个 字 节 代 表 一 个 像 素 。

  • 位 图 最 多 有 2 16 种 颜 色 。 BITMAPINFOHEADER 的 biCompression 成

    员 必须 是 BI_BITFIELDS 。 bmiColors 成 员 包 含 了 3 个 DWORD 型 颜 色 掩 码 , 分别 代 表 了 每 个 像 素 中 的 红 , 绿 和 蓝 色 成 分 。 DWORD 型 掩 码 中 的 位 必 须 是连 续 的 , 不 能 与 其 它 掩 码 重 叠 。 并 非 像 素 中 的 所 有 位 都 必 须 被 使 用 。 数 组中 的 每 个 WORD 值 代 表 一 个 像 素 。

  • 位 图 最 多 具 有 2 24 种 颜 色 , bmiColors 成 员 为 NULL 。 位 图

    数 组 中 的 每 个 三字 节 组 合 分 别 代 表 像 素 中 蓝 , 绿 红 的 深 度 。

  • 位 图 中 最 多 具 有 2 32 种 颜 色 。 BITMAPINFOHEADER 中 的

    biCompression 成 员 必 须 是 BI_BITFIELD S。 bmiColors 成 员 中 包 含 了 三 个 DWORD 颜 色 掩码 , 分 别 指 定 了 像 素 的 红 , 绿 和 蓝 成 分 。 DWORD 掩 码 中 的 位 必 须 是 连 续的 , 并 且 不 能 与 其 它 掩 码 重 叠 。 并 非 像 素 中 的 所 有 位 都 必 须 被 使 用 。 数 组中 的 每 个 DWORD 值 代 表 一 个 像 素 。

BITMAPINFOHEADER 结 构 中 的 biClrUsed 成 员 指 定 了 颜 色 表 中 实 际 使 用 的 索引 的 数 目 。 如 果 biClrUsed 成 员 被 设 为 0 , 位 图 将 使 用 biBitCount 成 员 中 指 定 的最 大 颜 色 数 。

bmiColors 表 中 的 颜 色 应 当 按 照 其 重 要 性 的 顺 序 出 现 。 另 一 种 情 况 是 , 对 于 使用 DIB 函 数 , bmiColors 成 员 可 以 是 一 个 16 位 无 符 号 整 数 的 数 组 , 指 定 了 当 前实 现 的 逻 辑 调 色 板 中 的 索 引 , 而 不 是 确 切 的 R G B 值 。 在 这 种 情 况 下 , 使 用 位图 的 应 用 程 序 必 须 调 用 W indows 的 DIB 函 数 ( CreateDIBitmap , CreateDIBPatternBrush 和 CreateDIBSection ) , iUsage 参 数 应 被 设 为DIB_PAL_COLOR S。

如 果 位 图 是 一 个 压 缩 位 图 ( 这 意 味 着 , 这 种 位 图 的 数 组 直 接 跟 在 一 个 指 针 所 引用 的 BITMAPINFO 头 的 后 面 ) , 在 使 用 D IB_PAL_COLORS 模 式 的 时 候 , biClrUsed 成 员 必 须 被 设 为 偶 数 , 以 便 使 DIB 位 图 数 组 从 DWORD 边 界 开 始 。

注 意 如 果 位 图 被 保 存 在 文 件 中 , 或 者 要 被 传 送 到 另 一 个 应 用 程 序 , bmiColors 成 员 不 能 包 含 调 色 板 索 引 。 除 非 应 用 程 序 独 占 地 使 用 和 控 制位 图 , 位 图 的 颜 色 表 中 应 当 包 含 准 确 的 RGB 值 。

请 参 阅 CBrush::CreateDIBPatternBrush

CDaoDatabaseInfo 结构

CDaoDatabaseInfo 结 构 具 有 如 下 形 式 :

struct CDaoDatabaseInfo

{

CString m_strName; // Primary

BOOL m_bUpdatable; // Primary BOOL m_bTransactions; // Primary CString m_strVersion; // Secondary Long m_lCollatingOrder; // Secondary short m_nQueryTimeout; // Secondary CString m_strConnect; // All

};

CDaoDatabaseInfo 结 构 中 包 含 了 与 数 据 库 对 象 有 关 的 信 息 , 该 对 象 是 为 数 据 访问 对 象 ( D A O ) 定 义 的 。 这 个 数 据 库 对 象 是 CDaoDatabase 类 的 MFC 对 象 下 面的 一 个 DAO 对 象 。 对 上 面 的 Primary , Secondary 和 A ll 的 引 用 指 明 了CDaoWorkspace::GetDatabaseInfo 成 员 函 数 是 如 何 返 回 信 息 的 。

成 员

m_strName

数 据 库 对 象 的 唯 一 名 字 。 要 直 接 获 得 这 个 属 性 的 值 , 调 用CDaoDatabase::GetName。 有 关 的 细 节 参 见 DAO 帮 助 的 “ 名 字 属 性 ” 主题。

m_bUpdatable

指 明 是 否 可 以 对 数 据 库 作 出 改 变 。 要 直 接 获 得 这 个 属 性 的 值 , 调 用CDaoDatabase:: CanUpdate 。 有 关 的 细 节 参 见 DAO 帮 助 的 “ 可 更 新 的 属性 ” 主 题 。

m_bTransactions

指 明 一 个 数 据 源 是 否 支 持 事 务 — — 一 系 列 改 变 的 记 录 , 以 后 可 以 被 滚 动回去 ( 取 消 ) 或 执 行 ( 保 存 ) 。 如 果 数 据 库 是 基 于 Microsoft Jet 数 据 库引 擎 的 , Transaction 属 性 是 非 零 值 , 你 可 以 使 用 事 务 。 其 它 数 据 库 引 擎可 能 不 支 持 事 务 。 要 直 接 获 取 这 个 属 性 , 调 用

CDaoDatabase::CanTransact。 有 关 的 细 节 参 见 DAO 帮 助 的 “ 事 务 属 性 ” 主 题 。

m_strVersion

指 明 了 Microsoft Jet 数 据 库 引 擎 的 版 本 。 要 直 接 获 取 这 个 属 性 的 值 , 调用 数 据 库 对 象 的 GetVersion 成 员 函 数 。 有 关 的 细 节 参 见 DAO 帮 助 的“ 版本 属 性 ” 主 题 。

m_lCollatingOrder

指 定 了 字 符 串 比 较 或 排 序 中 使 用 的 顺 序 。 可 能 的 取 值 包 括 :

  • dbSortGeneral 使 用 一 般 ( English , French , German ,

    Portuguese , Italian

和 Modern Spanish ) 的 排 序 顺 序 。

  • dbSortArabic 使 用 Arabic 排 序 顺 序 。

  • dbSortCyrillic 使 用 Russian 排 序 顺 序 。

  • dbSortCzech 使 用 Czech 排 序 顺 序 。

  • dbSortDutch 使 用 Dutch 排 序 顺 序 。

  • dbSortGreek 使 用 Greek 排 序 顺 序 。

  • dbSortHebrew 使 用 Hebrew 排 序 顺 序 。

  • dbSortHungarian 使用 Hungarian 排 序 顺 序 。

  • dbSortIcelandic 使 用 Icelandic 排 序 顺 序 。

  • dbSortNorwdan 使用 Norwegian 或 Danish 排 序 顺 序 。

  • dbSortPDXIntl 使用 Paradox International 排 序 顺 序 。

  • dbSortPDXNor 使 用 Paradox Norwegian 或 Danish 排 序 顺 序 。

  • dbSortPDXSwe 使用 Paradox Swedish 或 Finnish 排 序 顺 序 。

  • dbSortPolish 使 用 Polish 排 序 顺 序 。

  • dbSortSpanish 使 用 Spanish 排 序 顺 序 。

  • dbSortSwedFin 使用 Swedish 或 Finnish 排 序 顺 序 。

  • dbSortTurkish 使 用 Turkish 排 序 顺 序 。

  • dbSortUndefined 使 用 的 排 序 顺 序 未 定 义 或 未 知 。

更 多 的 信 息 参 见 DAO 帮 助 中 的 “ 数 据 访 问 的 自 定 义 W indows 注 册 表 设 置 ” 主题 。

m_nQueryTimeout

当在 ODBC 数 据 库 上 执 行 一 个 查 询 时 , Microsoft Jet 数 据 库 引 擎 在 超 时错 误 发 生 前 等 待 的 秒 数 。 缺 省 的 超 时 值 为 60 秒 。 当 QueryTimeout 被 设为 0 时 , 不 产 生 超 时 。 这 可 能 会 引 起 程 序 挂 起 。 要 直 接 获 得 这 个 属 性 的值 ,调 用 数 据 库 对 象 的 GetQueryTimeout 成 员 函 数 。有 关 的 细 节 参 见 DAO 帮 助 的 “ Que r yTimeout 属 性 ” 主 题 。

m_strConnect

提 供 了 有 关 打 开 的 数 据 库 的 源 的 信 息 。 有 关 连 接 字 符 串 以 及 直 接 获 取 这个 属 性 值 的 信 息 参 见 CDaoDatabase::GetConnect 成 员 函 数 。 更 多 的 信 息参见 DAO 帮 助 的 “ 连 接 属 性 ” 主 题 。

注 释

CDaoWorkspace::GetDatabaseInfo 成 员 函 数 所 获 得 的 信 息 被 保 存 在CDaoDatabaseInfo 结 构 中 。 为 CDaoWorkspace 对 象 调 用 GetDatabaseInfo 函 数 , 数 据 库 对 象 被 保 存 在 该 对 象 的 数 据 库 集 合 中 。 在 调 试 版 本 中 , CDaoDatabaseInfo 还 定 义 了 一 个 Dump 成 员 函 数 。 你 可 以 使 用 Dump 来 转 储 CDaoDatabaseInfo 对象 的 内 容 。

有 关 这 个 结 构 以 及 其 它 MFC DAO Info 结 构 的 信 息 参 见 “ Visual C++ 程 序 员 指南 ” 中 的 文 章 “ DAO 集 合 : 获 得 有 关 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoWorkspace, CDaoDatabase, CDaoWorkspace::GetDatabaseCount

CDaoErrorInfo 结 构

CDaoErrorInfo 结 构 具 有 以 下 形 式 :

struct CDaoErrorInfo

{

long m_lErrorCode; CString m_strSource; CString m_strDescription; CString m_strHelpFile; long m_lHelpContext;

};

CDaoErrorInfo 结 构 包 含 了 为 数 据 访 问 对 象 ( DAO ) 定 义 的 错 误 对 象 的 信 息 。MFC 没 有 将 DAO 错 误 对 象 封 装 为 一 个 类 。 CDaoException 类 提 供 了 访 问 DAO DBEngine 对 象 中 包 含 的 错 误 集 合 的 接 口 , 该 对 象 也 包 括 了 所 有 的 工 作 空 间 。当 MFC 的 DAO 操 作 抛 出 一 个 你 捕 捉 到 的 CDaoException 对 象 时 , MFC 会 填充 CDaoErrorInfo 结 构 并 将 它 保 存 在 异 常 对 象 的 m_pErrorInfo 成 员 中 。 ( 如 果你 选 择 了 直 接 调 用 D A O , 你 必 须 自 己 调 用 异 常 对 象 的 GetErrorInfo 函 数 以 填 充m_pErrorInfo 。)

有 关 处 理 DAO 错 误 的 更 多 信 息 参 见“ Visual C++ 程 序 员 指 南 ” 中 的 文 章“ 异 常 : 数 据 库 异 常 ” 。 相 关 的 信 息 参 见 DAO 帮 助 的 “ 错 误 对 象 ” 主 题 。

成 员

m_lErrorCode

一 个 数 字 的 DAO 错 误 代 码 。 参 见 DAO 帮 助 的“ 可 捕 捉 的 数 据 访 问 错 误 ” 主 题 。

m_strSource

最 初 产 生 错 误 的 对 象 或 应 用 程 序 的 名 字 。 源 属 性 指 定 了 一 个 字 符 串 表 达式 , 代 表 最 初 产 生 错 误 的 对 象 ; 这 个 表 达 式 通 常 是 对 象 的 类 名 。 有 关 的细 节 参 见 DAO 帮 助 的 “ 源 属 性 ” 主 题 。

与 错 误 相 关 的 描 述 性 字 符 串 。 有 关 的 细 节 参 见 DAO 帮 助 的 “ 描 述 属 性 ” 主 题 。

m_strHelpFile

M icrosoft W indows 帮 助 文 件 的 经 完 全 验 证 的 路 径 。 有 关 的 细 节 参 见 DAO

帮 助 的 “ 帮 助 上 下 文 , 帮 助 文 件 属 性 ” 主 题 。

m_lHelpContext

M icrosoft W indows 的 帮 助 文 件 中 主 题 的 上 下 文 ID 。有 关 的 细 节 参 见 DAO

帮 助 的 “ 帮 助 上 下 文 , 帮 助 文 件 属 性 ” 主 题 。

说 明

CDaoException::GetErrorInfo 成 员 函 数 获 得 的 信 息 被 保 存 在 一 个 CDaoErrorInfo 结 构 中 。在 异 常 处 理 函 数 中 检 查 你 捕 捉 到 的 CDaoException 对 象 的 m_pErrorInfo 数 据 成 员 , 或 者 在 你 生 成 的 CDaoException 对 象 中 调 用 GetErrorInfo 函 数 , 目的 是 对 可 能 会 在 DAO 接 口 的 直 接 调 用 中 产 生 的 错 误 进 行 检 查 。 在 调 试 版 本 中 , CDaoErrorInfo 还 定 义 了 一 个 Dump 成 员 函 数 , 可 以 使 用 Dump 来 转 储CDaoErrorInfo 对 象 的 内 容 。

有 关 这 个 结 构 和 其 它 MFC 的 DAO Info 结 构 的 信 息 参 见 “ Visual C++ 程 序 员 指南 ” 中 的 文 章 “ DAO 集 合 : 获 取 有 关 DAO 对 象 的 信 息 ” 。

CDaoFieldInfo 结构

CDaoFieldInfo 结 构 具 有 如 下 形 式 :

struct CDaoFieldInfo

{

CString m_strName; // Primary

short m_nType; // Primary

long m_lSize; // Primary

long m_lAttributes; // Primary short m_nOrdinalPosition; // Secondary BOOL m_bRequired; // Secondary BOOL m_bAllowZeroLength; // Secondary long m_lCollatingOrder; // Secondary CString m_strForeignName; // Secondary CString m_strSourceField; // Secondary CString m_strSourceTable; // Secondary CString m_strValidationRule; // All

CString m_strValidationText; // All CString m_strDefaultValue; // All

CDaoFieldInfo 结 构 中 包 含 了 为 数 据 访 问 对 象 ( DAO ) 定 义 的 字 段 对 象 的 信 息 。上 面 对 Primary , Secondary 和 All 的 引 用 指 明 了 CDaoTableDef, CDaoQueryDef 和 CDaoRecordset 类 中 的 GetFieldInfo 成 员 函 数 是 如 何 返 回 信 息 的 。

MFC 类 不 代 表 任 何 字 段 对 象 。 相 反 , DAO 对 象 构 成 了 下 面 包 含 字 段 对 象 集 合的 MFC 类 的 对 象 : CDaoTableDef, CDaoRecordset 和 CDaoQueryDef 。 这 些 类提 供 了 用 于 访 问 字 段 信 息 中 单 个 项 的 成 员 函 数 , 也 可 以 利 用 CDaoFieldInfo 对象 以 及 它 的 GetFieldInfo 成 员 函 数 来 一 次 访 问 所 有 的 信 息 。

CDaoFieldInfo 不 仅 可 以 用 于 检 查 对 象 的 属 性 , 还 可 以 用 于 构 造 一 个 输 入 参 数 , 用 来 创 建 表 中 的 新 字 段 。 对 于 这 个 任 务 , 可 以 使 用 更 简 单 的 选 项 。 但 是 要 想 获得 更 好 的 控 制 , 可 以 使 用 CDaoTableDef::CreateField 的 带 CDaoFieldInfo 参 数 的版 本 。

成 员

m_strName

字 段 对 象 的 唯 一 名 字 。 有 关 的 细 节 参 见 DAO 帮 助 中 的 “ 名 字 属 性 ” 主题。

m_nType

  • 个 指 明 字 段 数 据 类 型 的 值 。 有 关 的 细 节 参 见 DAO 帮 助

    中 的 “ 类 型 属

性 ” 主 题 。 这 个 属 性 的 取 值 可 能 是 下 列 值 之 一 :

  • dbBoolean 是 / 否 , 与 TRUE/FALSE 相 同

  • dbByte 字节

  • dbInteger 短 整 数

  • dbLong 长 整 数

  • dbCurrency Currency , 参 见 MFC 类 COleCurrency

  • dbSingle 单 精 度 数

  • dbDouble 双 精 度 数

  • dbDate 日期 /时 间 , 参 见 MFC 类 COleDateTime

  • dbText 文 本 , 参 见 MFC 类 CString

  • dbLongBinary 长 二 进 制 ( OLE 对 象 ) 可 能 你 希 望 使 用 MFC

    类CByteArray 来 代 替 CLongBinary , 因 为 CByteArray 功 能 更 强 , 也 更 易使用

  • dbMemo 备 注 , 参 见 MFC 类 CString 。

  • dbGUID 用 于 远 程 过 程 调 用 的 全 局 唯 一 的 标 识 符 。 更 多

    的 信 息 参 见

DAO 帮 助 中 的 “ 类 型 属 性 ” 主 题 。

注意 不 要 对 二 进 制 数 据 使 用 字 符 串 数 据 类 型 。 这 会 使 你 的 数 据 被 传 递 给Unicode/ANSI 转 换 层 , 导 致 负 担 增 加 , 并 且 可 能 会 导 致 不 希 望 出 现 的 转换 。

m_lSize

指 明 了 包 含 文 本 的 DAO 字 段 对 象 的 最 大 大 小 , 以 字 节 为 单 位 , 或 者 是包 含 了 文 本 或 数 字 值 的 字 段 对 象 的 固 定 大 小 。 有 关 的 细 节 参 见 DAO 帮助 中 的 “ 大 小 属 性 ” 主 题 。 大 小 可 能 是 下 列 值 之 一 :

类型

大小 ( Bytes)

描 述

dbBoolean

1 字 节

是 /否 ( 与 TRUE/FALSE 相 同 )

dbByte

1

字 节

dbInteger

2

整 数

dbLong

4

长 整 数

dbCurrency

8

Currency( COleCurrency)

dbSingle

4

单 精 度 数

dbDouble

8

双 精 度 数

dbDate dbText dbLongBinary

8

1 ~ 255

0

日 期 /时 间 ( COleDateTim e) 文 本 ( CString )

长 二 进 制 数 据 ( OLE 对 象 , CbyteArray ,

用 于 代 替 CLongBinary )

dbMemo

0

备 注 ( CString )

dbGUID

16

用 于 远 程 过 程 调 用 的 全 局 唯 一 的 标 识 符

m_lAttributes

指 定 了 表 定 义 , 记 录 集 , 查 询 定 义 或 索 引 对 象 中 包 含 的 字 段 对 象 的 特 征 。返 回 的 值 可 能 是 这 些 值 的 和 , 用 C++ 的 位 或 操 作 符 ( |) 生 成 :

  • dbFixedField 字 段 大 小 是 固 定 的 ( 数 字 字 段 的 缺 省 值 )

  • dbVariableField 字 段 大 小 可 变 ( 仅 对 文 本 字 段 成 立 ) 。

  • dbAutoIncrField 新 记 录 的 字 段 值 自 动 增 加 到 一 个 唯 一 的

    长 整 数 , 该数 不 能 改 变 。 仅 支 持 M icrosoft Jet 数 据 库 表 。

  • dbUpdatableField 字 段 的 值 可 以 改 变 。

  • dbDescending 字 段 按 照 降 序 ( Z ~ A 或 100 ~ 0 ) 保 存 ( 仅

    适 用 于 索 引对 象 的 字 段 集 合 中 的 字 段 对 象 。 在 MFC 中 , 索 引 对 象 自 己 就 包 含 在 表定 义 对 象 中 ) 。 如 果 你 省 略 了 这 个 常 量 , 字 段 就 按 照 升 序( A ~ Z 或 0 ~ 100 ) 保 存 ( 缺 省 值 ) 。

在 检 查 这 个 属 性 的 设 置 的 时 候 , 可 以 使 用 C++ 的 位 与 操 作 符 ( & ) 来 测试 某 个 指 定 的 值 。 在 设 置 多 重 属 性 的 时 候 , 可 以 用 位 或 操 作 符 ( |) 把 适当 的 常 量 组 合 起 来 。 有 关 的 细 节 参 见 DAO 帮 助 中 的 “ A ttribute 属 性 ” 主题。

m_nOrdinalPosition

  • 个 指 定 了 数 字 顺 序 的 值 , 将 按 照 这 种 顺 序 显 示 由 DAO

    字 段 对 象 所 代表 的 字 段 。 你 可 以 用 CDaoTableDef::CreateField 来 设 置 这 个 属 性 。 有 关的 细 节 参 见 DAO 帮 助 中 的 “ OrdinalPosition 属 性 ” 主 题 。

m_bRequired

指 明 一 个 DAO 字 段 对 象 是 否 需 要 非 Null 值 。 如 果 这 个 属 性 值 为 TRU E , 那 么 这 个 字 段 不 允 许 有 Null 值 。 如 果 Required 被 设 为 FALSE , 这 个 字段 就 可 以 有 Null 值 , 也 可 以 有 符 合 AllowZeroLength 和 ValidationRule 属 性 所 指 定 的 条 件 的 值 。 有 关 的 细 节 参 见 DAO 帮 助 中 的 “ Required 属

性 ” 主 题 。 你 可 以 使 用 CDaoTableDef::CreateField 来 设 置 这 个 属 性 。

m_bAllowZeroLength

指 明 对 于 一 个 文 本 类 型 或 M emo 数 据 类 型 的 DAO 字 段 对 象 , 空 字 符 串

( “ ” ) 是 否 是 有 效 的 值 。 如 果 这 个 属 性 为 TRUE , 空 字 符 串 就 是 有 效值 。 你 可 以 将 这 个 属 性 设 为 FALSE 以 确 保 不 能 将 这 个 字 段 的 值 设 为 空 字符 串 。 有 关 的 细 节 参 见 DAO 帮 助 中 的 “ AllowZeroLength 属 性 ” 主 题 。你 可 以 用 CDaoTableDef::CreateField 来 设 置 这 个 属 性 。

m_lCollatingOrder

为 字 符 串 比 较 和 排 序 指 定 了 文 本 顺 序 。 有 关 的 细 节 参 见 DAO 帮 助 中 的“ 为 数 据 访 问 自 定 义 W indows 注 册 表 设 置 ” 主 题 。 可 能 的 返 回 值 列 表 参见 CDaoDatabaseInfo 结 构 中 的 m_lCollatingOrder 成 员 。 你 可 以 用CDaoTableDef::CreateField 来 设 置 这 个 属 性 。

m_strForeignName

一 个 值 , 在 关 系 中 指 定 了 与 原 始 表 中 的 字 段 对 应 的 外 部 表 中 的 DAO 字段 对 象 的 名 字 。 有 关 的 细 节 参 见 DAO 帮 助 中 的 “ ForeignName 属 性 ” 主题。

m_strSourceField

指 定 了 一 个 字 段 名 , 是 表 定 义 , 记 录 集 或 查 询 集 对 象 所 包 含 的 DAO 字段 对 象 的 数 据 源 。 例 如 , 你 可 以 使 用 这 个 属 性 来 确 定 一 个 查 询 字 段 的 数据 源 , 这 个 字 段 的 名 字 与 基 础 表 中 的 字 段 名 无 关 。 有 关 的 细 节 参 见 DAO

帮 助 中 的 “ SourceField , SourceTable 属 性 ” 主 题 。 可 以 用

CDaoTableDef::CreateField 来 设 置 这 个 属 性 。

m_strSourceTable

指 定 了 一 个 表 名 , 是 表 定 义 , 记 录 集 或 查 询 集 对 象 的 数 据 源 。 这 个 属 性指 定 了 与 字 段 对 象 相 关 的 原 始 表 明 。 例 如 , 你 可 以 使 用 这 个 属 性 来 确 定一 个 查 询 字 段 的 数 据 源 , 这 个 字 段 的 名 字 与 基 础 表 中 的 字 段 名 无 关 。 有关 的 细 节 参 见 DAO 帮 助 中 的 “ SourceField , SourceTable 属 性 ” 主 题 。你 可 以 用 CDaoTableDef::CreateField 来 设 置 这 个 属 性 。

m_strValidationRule

当 改 变 或 增 加 字 段 的 数 据 时 用 于 检 验 数 据 是 否 有 效 的 值 。 有 关 的 细 节 参见 DAO 帮 助 中 的 “ ValidationRule 属 性 ” 主 题 。 你 可 以 用CDaoTableDef::CreateField 来 设 置 这 个 属 性 。

有 关 表 定 义 的 信 息 参 见 CDaoTableDefInfo 结 构 的 m_strValidationRule 成员。

m_strValidationText

一 个 值 , 指 定 了 当 D A O 字 段 对 象 的 值 不 符 合 ValidationRule 属 性 所 指 定的 有 效 规 则 时 应 用 程 序 显 示 的 消 息 文 本 。 有 关 的 细 节 参 见 D A O 帮 助 中的 “ ValidationText 属 性 ” 主 题 。 你 可 以 用 CDaoTableDef::CreateField 来设 置 这 个 属 性 。

m_strDefaultValue

一个 DAO 字 段 对 象 的 缺 省 值 。 当 创 建 了 一 个 新 记 录 时 , DefaultValue 属性 会 被 作 为 字 段 的 缺 省 值 自 动 输 入 。 有 关 的 细 节 参 见 DAO 帮 助 中 的“ DefaultValue 属 性 ” 主 题 。 你 可 以 用 CDaoTableDef::CreateField 来 设 置这 个 属 性 。

注 释

通 过 GetFieldInfo 成 员 函 数 ( 属 于 包 含 该 字 段 的 类 ) 获 取 的 信 息 保 存 在CDaoFieldInfo 结 构 中 。 调 用 保 存 了 字 段 对 象 的 包 含 对 象 的 GetFieldInfo 成 员 函数 。在 调 试 版 本 中 ,CDaoFieldInfo 还 定 义 了 一 个 Dump 成 员 函 数 。可 以 使 用 Dump 来 转 储 CDaoFieldInfo 对 象 的 内 容 。

有 关 这 个 结 构 以 及 其 他 MFC DAO Info 结 构 的 使 用 , 参 见 “ V isual C++ 程 序 员指 南 ” 中 的 文 章 “ DAO 集 合 : 获 取 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoTableDef::GetFieldInfo, CDaoRecordset::GetFieldInfo, CDaoQueryDef::GetFieldInfo

CDaoIndexInfo 结 构

CDaoIndexInfo 结 构 具 有 如 下 形 式 :

struct CDaoIndexInfo {

CDaoIndexInfo( ); // Constructor

CString m_strName; // Primary CDaoIndexFieldInfo* m_pFieldInfos; // Primary short m_nFields; // Primary

BOOL m_bPrimary; // Secondary

BOOL m_bUnique; // Secondary

BOOL m_bClustered; // Secondary

BOOL m_bIgnoreNulls; // Secondary

BOOL m_bRequired; // Secondary

BOOL m_bForeign; // Secondary

long m_lDistinctCount; // A ll

// Below the // Implementation comment:

// Destructor, not otherwise documented

};

CDaoIndexInfo 结 构 中 包 含 了 有 关 为 数 据 访 问 对 象 ( DAO ) 定 义 的 索 引 对 象 的信 息 。 上 面 对 Primary , Secondary 和 A ll 的 引 用 指 明 了 C DaoTableDef 和CDaoRecordset 类 的 成 员 函 数 GetIndexInfo 是 符 合 返 回 信 息 的 。

MFC 类 不 代 表 索 引 对 象 。 相 反 , DAO 对 象 构 成 了 属 于 CDaoTableDef 或CDaoRecordset 类 的 MFC 对 象 , 它 们 包 含 了 索 引 对 象 的 集 合 , 称 为 索 引 集 合 。这 些 类 提 供 了 用 于 访 问 索 引 信 息 的 单 个 项 的 成 员 函 数 , 还 可 以 调 用 包 含 对 象 的GetIndexInfo 成 员 函 数 , 利 用 CDaoIndexInfo 对 象 同 时 访 问 所 有 项 。

CDaoIndexInfo 具 有 一 个 构 造 函 数 和 一 个 析 构 函 数 , 用 于 适 当 地 分 配 和 释 放

m_pFieldInfos 中 的 索 引 字 段 信 息 。

成 员

m_strName

字 段 对 象 的 唯 一 名 字 。 有 关 的 细 节 参 见 DAO 帮 助 中 的 “ Name 属 性 ” 主题。

m_pFieldInfos

指 向 一 个 CDaoIndexFieldInfo 对 象 数 组 的 指 针 , 该 数 组 指 明 了 表 定 义 或记 录 集 中 哪 个 字 段 是 索 引 的 关 键 字 段 。 每 个 对 象 标 识 了 索 引 中 的 一 个 字段 。 缺 省 的 索 引 顺 序 是 升 序 。 一 个 索 引 对 象 可 以 具 有 一 个 或 多 个 索 引 关键 字 段 。 它 们 可 以 是 升 序 , 降 序 或 其 组 合 。

m_nFields

m_pFieldInfos 中 保 存 的 字 段 的 数 目 。

m_bPrimary

如 果 Primary 属 性 为 TRUE , 则 索 引 对 象 代 表 一 个 主 索 引 。 主 索 引 由 一个 或 多 个 字 段 组 成 , 这 些 字 段 可 以 按 照 给 定 的 顺 序 唯 一 地 标 识 表 中 的 所有 记 录 。 由 于 索 引 字 段 必 须 是 唯 一 的 , DAO 中 , 索 引 对 象 的 Unique 属性 也 被 设 为 TRUE 。 如 果 主 索 引 由 多 于 一 个 字 段 组 成 , 每 个 字 段 都 可 以有 重 复 的 值 , 但 是 所 有 索 引 字 段 取 值 的 组 合 必 须 是 唯 一 的 。 主 索 引 由 表

的 关 键 字 组 成 , 通 常 包 含 了 与 主 键 中 相 同 的 字 段 。

当 为 一 个 表 设 置 主 键 的 时 候 , 主 键 被 自 动 设 为 表 的 主 索 引 。 更 多 的 信 息参见 DAO 帮 助 中 的 “ Primary 属 性 ” 和 “ Unique 属 性 ” 主 题 。

注意 每 个 表 最 多 只 能 有 一 个 主 索 引 。

m_bUnique

指 明 一 个 索 引 对 象 是 否 是 表 的 唯 一 索 引 。 如 果 这 个 属 性 为 TRUE , 那 么这 个 索 引 对 象 代 表 了 唯 一 的 索 引 。 唯 一 的 索 引 由 表 中 的 一 个 或 多 个 字 段组 成 , 它 们 在 逻 辑 上 将 表 中 的 所 有 记 录 按 照 给 定 的 唯 一 顺 序 排 列 起 来 。如 果 这 个 索 引 由 一 个 字 段 组 成 , 这 个 字 段 中 的 值 必 须 是 独 立 的 。 如 果 索引 由 多 个 字 段 组 成 , 那 么 每 个 字 段 都 可 以 有 重 复 的 值 , 但 是 它 们 的 组 合必 须 是 唯 一 的 。

如 果 索 引 的 Unique 和 Primary 属 性 都 被 设 为 TRUE , 那 么 这 个 索 引 是 主索 引 , 并 且 是 唯 一 的 。 他 按 照 给 定 的 逻 辑 顺 序 唯 一 地 标 识 了 表 中 的 所 有记录。如果 Primary 属 性 被 设 为 FALSE , 这 个 索 引 是 次 索 引 。 次 索 引( 关键 索 引 或 非 关 键 索 引 ) 按 照 给 定 的 顺 序 在 逻 辑 上 排 列 表 中 的 记 录 , 但 是并 不 能 作 为 表 中 记 录 的 标 识 使 用 。

更 多 的 信 息 参 见 DAO 帮 助 中 的“ Primary 属性”和 “ Unique 属 性 ” 主 题 。

m_bClustered

指 明 一 个 索 引 对 象 是 否 代 表 一 个 表 的 成 簇 索 引 。 如 果 这 个 顺 序 被 设 为

TRUE , 那 么 索 引 对 象 代 表 成 簇 索 引 , 否 则 就 不 是 。 成 簇 索 引 由 一 个 或多 个 非 关 键 字 段 组 成 , 它 们 一 起 按 照 给 定 的 顺 序 排 列 表 中 的 所 有 记 录 。有 了 成 簇 索 引 , 表 中 的 数 据 将 按 照 索 引 指 定 的 顺 序 存 储 。 成 簇 索 引 提 供了 访 问 数 据 的 有 效 方 式 。 更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Clustered 属性 ” 主 题 。

注 意 对 于 使 用 Microsoft Jet 数 据 库 引 擎 的 数 据 库 , Clustered 属 性会 被 忽 略 , 因 为 Jet 数 据 库 引 擎 不 支 持 成 簇 索 引 。

m_bIgnoreNulls

指 明 是 否 有 记 录 的 索 引 项 在 它 们 的 索 引 字 段 中 包 含 Null 值 。 如 果 这 个 属性为 TRUE , 具 有 Null 值 的 字 段 就 没 有 索 引 项 。 如 果 要 使 对 记 录 的 查 找更 快 速 , 可 以 为 这 个 字 段 定 义 索 引 。 如 果 你 允 许 建 立 索 引 的 字 段 中 包 含Null 值 , 并 且 可 能 有 许 多 项 为 Null , 可 以 把 索 引 对 象 的 IgnoreNulls 属 性设为 TRUE 以 减 小 索 引 使 用 的 存 储 空 间 。 IgnoreNulls 属 性 和 Required 属性 的 设 置 共 同 决 定 了 一 个 具 有 Null 索 引 值 的 记 录 是 否 具 有 索 引 项 , 如 下面 的 表 格 所 示 :

IgnoreNulls

Required

索 引 字 段 中 的 Null

True

False

允 许 有 Null 值 , 但 没 有 索 引 项

False

False

允 许 有 Null 值 , 有 索 引 项

True 或 False

True

不 允 许 有 Null 值 , 没 有 索 引 项

更 多 的 信 息 参 见 DAO 帮 助 中 的 “ IgnoreNulls 属 性 ” 主 题 。

m_bRequired

指 明 一 个 DAO 索 引 对 象 是 否 要 求 非 Null 值 。 如 果 这 个 属 性 为 TRU E , 那 么 索 引 对 象 不 允 许 有 Null 值 。更 多 的 信 息 参 见 DAO 帮 助 中 的“ Required 属 性 ” 主 题 。

Tip

当 你 能 够 为 D A O 索 引 对 象 或 字 段 对 象 ( 被 表 定 义 , 记 录 集 或 查 询 定 义对 象 所 包 含 ) 设 置 这 个 属 性 的 时 候 , 就 为 字 段 对 象 设 置 这 个 属 性 。 为 字段 对 象 设 置 的 属 性 的 有 效 性 检 查 将 在 索 引 对 象 之 前 进 行 。

m_bForeign

指 明 索 引 对 象 是 否 代 表 了 表 中 的 一 个 外 部 关 键 字 。 如 果 这 个 属 性 为TRUE , 则 索 引 对 象 代 表 了 表 中 的 外 部 关 键 字 。 外 部 关 键 字 由 外 部 表 中的 一 个 或 多 个 字 段 组 成 , 他 唯 一 确 定 了 主 表 中 的 行 。 当 你 创 建 一 个 要 求引 用 完 整 性 的 关 系 时 , M icrosoft Jet 数 据 库 引 擎 为 外 部 表 创 建 一 个 索 引 对象 并 设 置 Foreign 属 性 。 更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Foreign 属 性 ” 主 题 。

m_lDistinctCount

指 定 了 相 关 表 中 包 含 的 索 引 对 象 的 唯 一 值 的 数 目 。 检 查 DistinctCount 属性 以 确 定 索 引 中 唯 一 值 或 键 的 数 目 。 每 个 键 只 被 计 数 一 次 , 即 使 在 索 引允 许 重 复 值 时 , 它 们 多 次 出 现 。 这 个 信 息 对 于 试 图 通 过 统 计 索 引 信 息 来优 化 数 据 访 问 的 应 用 程 序 非 常 有 用 。 唯 一 值 的 数 目 还 被 当 作 索 引 对 象 的

势 。 D istinctCount 属 性 并 不 总 是 反 映 某 一 时 刻 关 键 字 的 数 目 。 例 如 , 由于 取 消 事 务 所 引 起 的 改 变 不 会 被 DistinctCount 属 性 立 即 反 映 。 更 多 的 信息 参 见 D A O 帮 助 中 的 “ DistinctCount 属 性 ” 主 题 。

注 释

用 表 定 义 对 象 的 GetIndexInfo 成 员 函 数 获 得 的 信 息 被 保 存 在 CDaoIndexInfo 结构 中 。 调 用 包 含 了 索 引 对 象 的 表 定 义 对 象 的 GetIndexInfo 成 员 函 数 。 在 调 试 版本 中 CDaoIndexInfo 还 定 义 了 一 个 Dump 成 员 函 数 。 你 可 以 使 用 Dump 来 转 储CDaoIndexInfo 对 象 的 内 容 。

有 关 这 个 结 构 以 及 其 他 MFC DAO Info 结 构 的 使 用 , 参 见 “ V isual C++ 程 序 员指 南 ” 中 的 文 章 “ DAO 集 合 : 获 取 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoTableDef::GetIndexInfo

CDaoIndexFieldInfo 结 构

CDaoIndexFieldInfo 结 构 具 有 如 下 形 式 :

struct CDaoIndexFieldInfo

{

CString m_strName; // Primary

BOOL m_bDescending; // Primary

};

CDaoIndexFieldInfo 结 构 中 包 含 了 为 数 据 访 问 对 象 ( DAO ) 定 义 的 索 引 字 段 对象 的 信 息 。 索 引 对 象 可 以 有 多 个 字 段 , 指 明 表 定 义 ( 或 基 于 表 的 记 录 集 ) 的 索引 建 立 在 哪 些 字 段 上 。 上 面 对 Primary 的 引 用 指 明 了 调 用 CDaoTableDef 或CDaoRecordset 类 的 GetIndexInfo 成 员 函 数 时 获 得 的 信 息 是 如 何 通 过CDaoIndexInfo 对 象 的 m_pFiledInfos 成 员 返 回 的 。

MFC 类 不 代 表 索 引 对 象 和 索 引 字 段 对 象 。相 反 ,DAO 对 象 构 成 了 CDaoTableDef 或 CDaoRecordset 类 的 MFC 对 象 , 这 些 对 象 中 包 含 了 索 引 对 象 的 集 合 , 名 为索 引 集 。 每 个 索 引 对 象 包 含 了 一 个 字 段 对 象 的 集 合 。 这 些 类 提 供 了 用 于 访 问 索引 信 息 中 单 个 项 的 成 员 函 数 , 你 也 可 以 通 过 调 用 包 含 对 象 的 GetIndexInfo 成 员函 数 在 CDaoIndexInfo 对 象 中 访 问 所 有 的 项 。 CDaoIndexInfo 中 具 有 一 个 数 据 成员 m_pFieldInfos, 它 指 向 一 个 CDaoIndexFieldInfo 对 象 的 数 组 。

成 员

m_strName

索 引 字 段 对 象 的 唯 一 的 名 字 。 有 关 的 细 节 参 见 DAO 帮 助 中 的 “ Name 属性 ” 主 体 。

m_bDescending

指 明 了 索 引 对 象 定 义 的 索 引 顺 序 。 如 果 顺 序 是 降 序 的 则 该 成 员 的 值 为

TRUE 。

注 释

调 用 表 定 义 或 记 录 集 对 象 的 GetIndexInfo 成 员 函 数 , 你 感 兴 趣 的 索 引 对 象 就 保存 在 这 些 对 象 的 索 引 集 中 。然 后 访 问 CDaoIndexInfo 对 象 的 m_pFieldInfos 成 员 。m_pFieldInfos 数 组 的 长 度 保 存 在 m_nFields 中 。 CDaoIndexFieldInfo 还 在 调 试版 本 中 定 义 了 一 个 Dump 函 数 。 你 可 以 使 用 Dump 来 转 储 CDaoIndexFieldInfo 对 象 的 内 容 。

有 关 这 个 结 构 以 及 其 他 MFC DAO Info 结 构 的 使 用 参 加 “ Visual C++ 程 序 员 指南 ” 中 的 文 章 “ DAO 集 合 : 获 取 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoTableDef::GetIndexInfo, CDaoRecordset::GetIndexInfo

CDaoParameterInfo 结 构

CDaoParameterInfo 结 构 具 有 如 下 形 式 :

struct CDaoParameterInfo

{

CString m_strName; // Primary

short m_nType; // Primary

C O leVariant m_varValue; // Secondary

};

CDaoParameterInfo 结 构 中 包 含 了 为 数 据 访 问 对 象 ( D A O ) 定 义 的 参 数 对 象 的信 息 。 上 面 对 Primary 和 Secondary 的 引 用 指 明 了 CDaoQueryDef 类 的 成 员 函 数GetParameterInfo 是 如 何 返 回 信 息 的 。

MFC 没 有 把 DAO 参 数 对 象 封 装 为 一 个 类 。 DAO 查 询 对 象 构 成 了 MFC 的CDaoQueryDef 对 象 的 基 础 , 在 它 们 的 参 数 集 中 保 存 了 参 数 。 要 访 问CDaoQueryDef 对 象 中 的 参 数 对 象 , 就 调 用 查 询 定 义 对 象 的 成 员 函 数GetParameterInfo , 可 以 获 得 特 点 的 参 数 名 或 是 参 数 集 的 索 引 。 你 可 以 与GetParameterInfo 一 起 使 用 CDaoQueryDef::GetParameterCount 函 数 , 以 在 参 数集 中 循 环 。

成 员

m_strName

参 数 对 象 的 唯 一 的 名 字 。 更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Name 属 性 ” 主 题 。

m_nType

指 明 了 参 数 对 象 的 数 据 类 型 的 值 。 可 能 取 值 的 列 表 参 见 CDaoFieldInfo 结构的 m_nType 成 员 。 更 多 的 信 息 参 见 DAO 帮 助 中 的“ Type 属 性 ” 主 题 。

m_varValue

参 数 的 值 , 保 存 在 COleVariant 对 象 中 。

注 释

通 过 成 员 函 数 CDaoQueryDef::GetParameterInfo 获 得 的 信 息 保 存 在CDaoParameterInfo 结 构 中 。 为 查 询 定 义 对 象 调 用 GetParameterInfo 函 数 , 这 些对 象 的 参 数 集 中 保 存 了 参 数 对 象 。

注 意 如 果 你 希 望 得 到 或 设 置 参 数 的 值 , 使 用 CDaoRecordset 类 的GetParamValue 和 SetParamValue 成 员 函 数 。

CDaoParameterInfo 还 为 调 试 模 式 定 义 了 一 个 Dump 成 员 函 数 。你 可 以 使 用 Dump 来 转 储 CDaoParameterInfo 对 象 的 内 容 。 关 于 这 个 结 构 以 及 其 他 MFC DAO Info 结 构 的 使 用 参 见 “ Visual C++ 程 序 员 指 南 ” 中 的 文 章 “ DAO 集 合 : 获 得 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoQueryDef

CDaoQueryDefInfo 结 构

CDaoQueryDefInfo 结 构 具 有 如 下 形 式 :

struct CDaoQueryDefInfo

{

CString m_strName; // Primary

short m_nType; // Primary

COleDateTime m_dateCreated; // Secondary COleDateTime m_dateLastUpdated; // Secondary BOOL m_bUpdatable; // Secondary

BOOL m_bReturnsRecords; // Secondary

CString m_strSQL; // A ll

CString m_strConnect; // All

short m_nODBCTimeout; // A ll

};

CDaoQueryDefInfo 结 构 包 含 了 为 数 据 访 问 对 象 ( DAO ) 定 义 的 查 询 定 义 对 象的 信 息 。 查 询 定 义 对 象 是 CDaoQueryDef 类 的 对 象 。 上 面 对 Primary, Secondary 和 A ll 的 引 用 指 明 了 CDaoDatabase 类 的 成 员 函 数 GetQueryDefInfo 是 如 何 返 回信 息 的 。

成 员

m_strName

查 询 定 义 对 象 的 唯 一 的 名 字 。 更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Name 属性 ” 主 题 。 调 用 CDaoQueryDef::GetName 以 直 接 访 问 这 个 属 性 。

m_nType

指 明 了 查 询 定 义 对 象 的 操 作 类 型 的 值 。 其 取 值 可 能 是 下 列 值 之 一 :

  • dbQSelect Select — 该 查 询 选 择 记 录 。

  • dbQAction Action — 该 查 询 移 动 或 改 变 数 据 , 但 是 不 返 回

    记 录 。

  • dbQCrosstab Crosstab — 该 查 询 用 与 电 子 表 格 类 似 的 格 式 返

    回 数 据 。

  • dbQDelete Delete — 该 查 询 删 除 指 定 的 行 。

  • dbQUpdate Update — 该 查 询 更 新 一 些 记 录 。

  • dbQAppend Append — 该 查 询 在 表 或 查 询 的 尾 部 加 入 新 记 录

  • dbQMakeTable Make-table — 该 查 询 根 据 记 录 集 创 建 一 个 新 表

  • dbQDDL Data-definition — 该 查 询 影 响 表 格 及 其 部 分 的 结 构

  • dbQSQLPassThrough Pass-through — 直 接 把 SQL 语 句 传 递 给 数 据库

    , 没 有 中 间 处 理 。

  • dbQSetOperation Union — 该 查 询 创 建 一 个 快 照 型 记 录 集 对 象

    , 其 中包 含 了 一 个 或 多 个 表 中 指 定 记 录 的 数 据 , 所 有 重 复 的 记 录 都 被 删 除 。如 果 要 包 含 重 复 记 录 , 在 查 询 定 义 的 SQL 语 句 中 加 入 ALL 关 键 字 。

  • dbQSPTBulk 与 dbQSQLPassThrough 一 起 使 用 , 指 定 了 一 种 不 返

    回记 录 的 查 询 。

注 意 在 创 建 一 个 直 接 传 递 SQL 的 查 询 时 , 你 不 需 要 设 置dbQSQLPassThrough 常 量 。 它 是 在 创 建 查 询 定 义 对 象 并 设 置 连 接 属 性 的时 候 由 Microsoft Jet 数 据 库 引 擎 自 动 设 置 的 。

更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Type 属 性 ” 主 题 。

m_dateCreated

创 建 查 询 定 义 的 日 期 和 时 间 。 如 果 要 直 接 获 得 创 建 查 询 定 义 的 日 期 , 调用 与 表 相 关 的 CDaoTableDef 对 象 的 成 员 函 数 GetDateCreated。 更 多 的 信

息 参 见 下 面 的 注 释 。还 可 以 参 看 DAO 帮 助 中 的“ DateCreated ,LastUpdated

属 性 ” 主 题 。

m_dateLastUpdated

最 近 一 次 对 查 询 定 义 作 出 改 变 的 日 期 和 时 间 。 如 果 要 直 接 获 得 最 近 改 变表 的 日 期 , 调 用 查 询 定 义 的 成 员 函 数 GetDateLastUpdated 。 更 多 的 信 息参 见 下 面 的 注 释 。 同 时 参 看 DAO 帮 助 中 的 “ DateCreated , LastUpdated 属 性 ” 主 题 。

m_bUpdatable

指 明 是 否 可 以 修 改 查 询 定 义 对 象 。 如 果 这 个 属 性 为 TRUE , 查 询 定 义 可以 被 修 改 ; 否 则 不 能 。 可 以 被 修 改 意 味 着 查 询 定 义 对 象 的 查 询 定 义 可 以被 修 改 。 如 果 查 询 定 义 可 以 被 修 改 , 则 查 询 定 义 对 象 的 Updatable 属 性被 设 为 TRU E , 即 使 结 果 记 录 集 不 能 被 修 改 。 如 果 要 直 接 获 得 这 个 属 性的 值 , 调 用 查 询 定 义 对 象 的 CanUpdate 成 员 函 数 。 更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Updatable 属 性 ” 主 题 。

m_bReturnsRecords

指 明 一 个 直 接 将 SQL 传 递 给 外 部 数 据 库 的 查 询 是 否 返 回 记 录 。 如 果 这 个属 性 为 TRU E , 该 查 询 返 回 记 录 。 如 果 要 直 接 获 得 这 个 属 性 的 值 , 调 用CdaoQuery- Def::GetReturnsRecords。 并 不 是 所 有 直 接 将 SQL 传 递 给 外 部数 据 库 的 查 询 都 返 回 记 录 。 例 如 , SQL UPDATE 语 句 更 新 记 录 , 但 不 返回 语 句 , 而 SQL SELECT 语 句 却 返 回 语 句 。 更 多 的 信 息 参 见 D A O 帮 助

m_strSQL

定 义 了 查 询 定 义 对 象 所 执 行 的 查 询 的 SQL 语 句 。 SQL 属 性 中 包 含 了 S Q L 语 句 , 决 定 了 执 行 查 询 时 记 录 如 何 被 选 择 , 分 组 或 排 序 。 你 可 以 使 用 该查 询 把 记 录 选 择 到 一 个 dynaset 类 型 或 snapshot 类 型 的 记 录 集 对 象 。 你 也可 以 定 义 一 个 批 查 询 来 修 改 数 据 而 不 返 回 记 录 。 你 可 以 调 用 查 询 定 义 的GetSQL 成 员 函 数 来 直 接 获 得 这 个 属 性 的 值 。更 多 的 信 息 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ DAO 查 询 ” 以 及 DAO 帮 助 中 的 “ SQL 属 性 ” 主 题 。

m_strConnect

提 供 了 用 于 直 接 传 递 查 询 的 数 据 库 源 的 信 息 。 这 个 信 息 采 用 连 接 字 符 串的 形 式 。 有 关 连 接 字 符 串 以 及 直 接 获 得 这 个 属 性 值 的 更 多 信 息 参 见CDaoDatabase::GetConnect 成 员 函 数 。

m_nODBCTimeout

当 在 一 个 ODBC 数 据 库 上 运 行 一 个 查 询 时 , 在 产 生 一 个 超 时 错 误 之 前 , M icrosoft Jet 数 据 库 引 擎 将 等 待 的 秒 数 。 当 你 使 用 ODBC 数 据 库 的 时 候 , 例如 M icrosoft SQL Server, 可 能 会 因 为 网 络 阻 塞 或 是 ODBC 服 务 器 的 重负 而 引 起 延 迟 。 为 了 避 免 无 限 等 待 , 你 可 以 指 定 M icrosoft Jet 数 据 库 引擎 在 产 生 错 误 前 等 待 多 长 时 间 。 缺 省 的 超 时 值 为 60 秒 。 你 可 以 调 用 查 询定 义 的 GetODBCTimeout 成 员 函 数 来 直 接 获 得 这 个 属 性 的 值 。 更 多 的 信

注 释

CDaoDatabase::GetQueryDefInfo 成 员 函 数 获 得 的 信 息 被 保 存 在CDaoQueryDefInfo 结 构 中 。 调 用 数 据 库 对 象 的 GetQueryDefInfo 函 数 , 查 询 定义 对 象 就 保 存 在 该 对 象 的 查 询 定 义 集 合 中 。 CDaoQueryDefInfo 还 为 调 试 版 本 定义 了 一 个 Dump 成 员 函 数 。 你 可 以 利 用 Dump 来 转 储 CDaoQueryDefInfo 对 象的 内 容 。 CDaoDatabase 类 也 提 供 了 用 于 直 接 访 问 CDaoQueryDefInfo 对 象 所 返回 的 所 有 属 性 的 成 员 函 数 , 因 此 你 可 能 很 少 需 要 调 用 GetQueryDefInfo 。

当 你 在 查 询 定 义 对 象 的 字 段 集 合 或 参 数 集 合 中 加 入 新 的 字 段 或 参 数 时 , 如 果 基础 数 据 库 不 支 持 新 对 象 所 指 定 的 数 据 类 型 , 就 会 抛 出 一 个 异 常 。

日 期 和 时 间 设 置 是 从 创 建 查 询 定 义 或 最 后 修 改 查 询 定 义 的 计 算 机 上 获 得 的 。 在多 用 户 环 境 中 , 用 户 应 当 直 接 使 用 net time 命 令 从 文 件 服 务 器 上 获 得 这 些 设 置 , 以 避 免 DateCreated 和 LastUpdated 属 性 中 的 不 一 致 。 有 关 这 个 结 构 和 其 他 MFC DAO Info 结 构 的 信 息 参 见 “ Visual C++ 程 序 员 指 南 ” 中 的 文 章 “ D A O 集 合 : 获 得 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoQueryDef, CDaoDatabase

CDaoRelationInfo 结 构

CDaoRelationInfo 结 构 具 有 如 下 形 式 :

struct CDaoRelationInfo

{

CDaoRelationInfo( ); // Constructor CString m_strName; // Primary

CString m_strTable; // Primary

CString m_strForeignTable; // Primary

long m_lAttributes; // Secondary CDaoRelationFieldInfo* m_pFieldInfos; // Secondary short m_nFields; // Secondary

// Below the // Implementation comment:

// Destructor, not otherwise documented

};

CDaoRelationInfo 结 构 中 包 含 了 在 CDaoDatabase 对 象 的 两 个 表 之 间 定 义 的 关 系的 信 息 。 上 面 对 Primary 和 Secondary 的 引 用 指 明 了 CDaoDatabase 类 的 成 员 函数 GetRelationInfo 是 如 何 返 回 信 息 的 。

MFC 类 不 代 表 关 系 对 象 。 相 反 , DAO 对 象 构 成 了 CDaoDatabase 类 的 MFC 对象 , 它 维 护 着 一 个 关 系 对 象 的 集 合 : CDaoDatabase 提 供 了 用 于 访 问 关 系 信 息 中一 些 单 独 项 的 成 员 函 数 , 也 可 以 调 用 包 容 数 据 库 对 象 的 GetRelationInfo 成 员 函

数 , 通 过 CDaoRelationInfo 结 构 同 时 访 问 所 有 的 信 息 。

成 员

m_strName

关 系 对 象 的 唯 一 名 字 。 更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Name 属 性 ” 主题。

m_strTable

命 名 关 系 中 的 主 表 。

m_strForeignTable

命 名 关 系 中 的 外 部 表 。 外 部 表 是 用 于 包 含 外 部 关 键 字 的 表 。 通 常 , 可 以利 用 外 部 表 来 建 立 或 强 化 引 用 完 整 性 。 外 部 表 通 常 位 于 一 对 多 关 系 中 多的 一 方 。 外 部 表 的 例 子 有 包 含 以 下 内 容 的 表 : 美 国 州 代 码 或 加 拿 大 的 省或 顾 客 的 订 货 。

m_lAttributes

包 含 了 有 关 关 系 类 型 的 信 息 。 这 个 成 员 的 值 可 以 是 下 列 值 中 的 任 何 一 个 :

  • dbRelationUnique 一 对 一 关 系 。

  • dbRelationDontEnforce 关 系 是 非 强 迫 的 的 。 ( 没 有 引 用 完

    整 性 )

  • dbRelationInherited 关 系 存 在 于 非 当 前 数 据 库 中 , 其 中 包

    含 了 两 个 相连 的 表 。

  • dbRelationLeft 关 系 是 左 连 接 的 。 左 外 部 连 接 包 含 了 两 个

    表 中 第 一 个

( 左 边 ) 表 的 所 有 记 录 , 即 使 在 第 二 个 表 ( 右 边 ) 中 没 有 与 之 匹 配 的值。

  • dbRelationRight 关 系 是 右 连 接 的 。 右 的 外 部 连 接 包 含 了

    两 个 表 中 第 二

个 ( 右 边 ) 表 的 所 有 记 录 , 即 使 在 第 一 个 表 ( 左 边 ) 中 没 有 与 之 匹 配的 值 。

  • dbRelationUpdateCascade 更 新 操 作 是 重 叠 的 。

  • dbRelationDeleteCascade 删 除 操 作 是 重 叠 的 。

m_pFieldInfos

指向 CDaoRelationFieldInfo 结 构 数 组 的 指 针 。 对 于 关 系 中 的 每 个 字 段 , 该 数 组 中 都 包 含 一 个 对 象 。 m_nFields 数 据 成 员 给 出 了 数 组 元 素 的 个 数 。

m_nFields

m_pFieldInfos 数 据 成 员 中 CDaoRelationFieldInfo 对 象 的 个 数 。

注 释

通 过 CDaoDatabase::GetRelationInfo 成 员 函 数 获 取 的 信 息 被 保 存 在CDaoRelationInfo 结 构 中 。 CDaoRelationInfo 还 在 调 试 版 本 中 定 义 了 一 个 Dump 成 员 函 数 。 你 可 以 使 用 Dump 来 转 储 CDaoRelationInfo 对 象 的 内 容 。 有 关 这 个结 构 以 及 其 他 MFC DAO Info 结 构 的 信 息 参 见 “ V isual C++ 程 序 员 指 南 ” 中 的文 章 “ DAO 集 合 : 获 取 DAO 对 象 的 信 息 ” 。

CDaoRelationFieldInfo 结构

CDaoRelationFieldInfo 结 构 具 有 如 下 形 式 :

struct CDaoRelationFieldInfo

{

CString m_strName; // Primary CString m_strForeignName; // Primary

};

CDaoRelationFieldInfo 结 构 中 包 含 了 为 数 据 访 问 对 象 ( DAO ) 定 义 的 关 系 中 的字 段 的 信 息 。 DAO 关 系 对 象 指 定 了 定 义 关 系 的 主 表 中 的 字 段 和 外 部 表 中 的 字段 。 在 上 面 的 结 构 定 义 中 对 Primary 的 引 用 指 明 了 调 用 CDaoDatabase 类 的 成 员函 数 GetRelationInfo 获 得 的 信 息 是 如 何 在 CDaoRelationInfo 对 象 的m_pFieldInfos 成 员 中 返 回 的 。

MFC 类 不 代 表 任 何 关 系 对 象 和 关 系 字 段 对 象 。 相 反 , DAO 对 象 构 成 了CDaoDatabase 类 的 MFC 对 象 , 其 中 包 含 了 关 系 对 象 的 集 合 , 称 为 关 系 集 合 。每 个 关 系 对 象 包 含 了 一 个 关 系 对 象 的 集 合 。 每 个 关 系 对 象 使 主 表 中 的 字 段 和 外部 表 中 的 字 段 产 生 联 系 。 合 在 一 起 , 关 系 字 段 对 象 定 义 了 每 个 表 中 的 一 组 字 段 , 它 们 一 起 定 义 了 关 系 。 CDaoDatabase 使 你 能 够 调 用 GetRelationInfo 成 员 函 数 通

据 成 员 m_pFieldInfo s, 它 指 向 一 个 CDaoRelationFieldInfo 对 象 的 数 组 。

成 员

m_strName

关 系 的 主 表 中 字 段 的 名 字 。

m_strForeignName

关 系 的 外 部 表 中 字 段 的 名 字 。

注 释

调 用 包 容 的 CDaoDatabase 对 象 的 GetRelationInfo 成 员 函 数 , 你 感 兴 趣 的 关 系对 象 就 保 存 在 该 对 象 的 关 系 集 合 中 。 然 后 访 问 CDaoRelationInfo 对 象 的m_pFieldInfos 成 员 。 CDaoRelationFieldInfo 还 在 调 试 版 本 中 定 义 了 一 个 Dump 函 数 。 你 可 以 使 用 Dump 来 转 储 CDaoRelationFieldInfo 对 象 的 内 容 。

有 关 这 个 结 构 以 及 其 他 MFC DAO Info 结 构 的 信 息 参 见 “ V isual C++ 程 序 员 指南 ” 中 的 文 章 “ DAO 集 合 : 获 得 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoRelationInfo

CDaoTableDefInfo 结构

CDaoTableDefInfo 结 构 具 有 如 下 形 式 :

struct CDaoTableDefInfo

{

CString m_strName; // Primary

BOOL m_bUpdatable; // Primary

long m_lAttributes; // Primary COleDateTime m_dateCreated; // Secondary COleDateTime m_dateLastUpdated; // Secondary CString m_strSrcTableName; // Secondary CString m_strConnect; // Secondary CString m_strValidationRule; // A ll

CString m_strValidationText; // All long m_lRecordCount; // A ll

};

CDaoTableDefInfo 结 构 中 包 含 了 为 数 据 访 问 对 象 ( DAO ) 定 义 的 表 定 义 对 象 的信 息 。 表 定 义 是 CDaoTableDef 类 的 对 象 。 上 面 对 Primary, Secondary 和 All 的引 用 指 明 了 在 CDaoDatabase 类 的 成 员 函 数 GetTableDefInfo 中 信 息 是 如 何 返 回的 。

成 员

m_strName

表 定 义 对 象 的 唯 一 的 名 字 。 如 果 要 直 接 获 得 这 个 属 性 的 值 , 调 用 表 定 义对 象 的 GetName 成 员 函 数 。 更 多 的 信 息 参 见 D A O 帮 助 中 的 “ Name 属性 ” 主 题 。

m_bUpdatable

指 明 是 否 可 以 修 改 表 。 确 定 一 个 表 可 以 修 改 的 最 快 的 方 式 是 否 为 这 个 表打 开 一 个 CDaoTableDef 对 象 , 然 后 调 用 这 个 对 象 的 CanUpdate 成 员 函数 。对 于 一 个 新 创 建 的 表 定 义 对 象 ,CanUpdate 总 是 返 回 非 零 值( TRUE ), 对 于 连 接 的 表 定 义 对 象 则 返 回 0 ( FALSE ) 。 一 个 新 创 建 的 表 定 义 对 象仅 能 被 附 加 到 一 个 用 户 具 有 写 权 限 的 数 据 库 。 如 果 该 表 仅 包 含 不 可 更 新的 字 段 ,CanUpdate 返 回 0 。当 有 一 个 或 多 个 字 段 可 以 被 更 新 时 ,CanUpdate 返 回 非 零 值 。 你 只 能 编 辑 可 更 新 的 字 段 。 更 多 的 信 息 参 见 D A O 帮 助 中的 “ Updatable 属 性 ” 主 题 。

m_lAttributes

指 定 了 表 定 义 对 象 所 代 表 的 表 的 特 征 。 如 果 要 获 得 表 定 义 的 当 前 属 性 , 调 用 它 的 成 员 函 数 GetAttributes 。 返 回 值 可 能 是 下 面 这 些 值 的 组 合 ( 使用 位 或 操 作 符 |) :

  • dbAttachExclusive 对 于 使 用 M icrosoft Jet 数 据 库 引 擎 的 数 据

    库 , 指 明

这 个 表 是 一 个 独 占 使 用 的 表 。

  • dbAttachSavePWD 对 于 使 用 M icrosoft Jet 数 据 库 引 擎 的 数 据

    库 , 指明 连 接 的 表 的 用 户 ID 和 密 码 被 保 存 在 连 接 信 息 中 。

  • dbSystemObject

指 明 这 个 表 是 由 M icrosoft Jet 数 据 库 引 擎 提 供 的 系 统

表 ( 只 读 ) 。

  • dbHiddenObject

指 明 这 个 表 是 由 M icrosoft Jet 数 据 库 引 擎 提 供 的 隐 含

表 ( 只 读 ) 。

  • dbAttachedTable 指 明 这 个 表 是 非 ODBC 数 据 库 , 例 如 Paradox

    数 据库 的 一 个 连 接 表 。

  • dbAttachedODBC 指 明 这 个 表 是 ODBC 数 据 库 , 例 如 M icrosoft

    SQL Server 数 据 库 的 一 个 连 接 表 。

m_dateCreated

创 建 表 的 日 期 和 时 间 。 如 果 要 直 接 获 得 创 建 表 的 日 期 , 调 用 与 该 表 相 关的 CDaoTableDef 对 象 的 GetDateCreated 成 员 函 数 。 更 多 的 信 息 参 见 下 面的 注 释 。 相 关 信 息 参 见 DAO 帮 助 中 的 “ DateCreated , LastUpdated 属 性 ” 主 题 。

m_dateLastUpdated

最 近 对 表 的 设 计 作 出 改 变 的 日 期 和 时 间 。 如 果 要 直 接 获 取 该 表 最 近 被 修改 的 日 期 , 调 用 与 该 表 相 关 的 CDaoTableDef 对 象 的 GetDateLastUpdated 成 员 函 数 。 更 多 的 信 息 参 见 下 面 的 注 释 。 相 关 的 信 息 参 见 D A O 帮 助 中的 “ DateCreated , LastUpdated 属 性 ” 主 题 。

m_strSrcTableName

指 定 了 连 接 表 的 名 字 , 如 果 有 的 话 。 如 果 要 直 接 获 得 源 表 的 名 字 , 调 用与 表 相 关 的 CDaoTableDef 对 象 的 GetSourceTableName 成 员 函 数 。

m_strConnect

提 供 了 与 打 开 的 数 据 库 源 有 关 的 信 息 。 你 可 以 调 用 CDaoTableDef 对 象的 成 员 函 数 GetConnect 来 检 查 这 个 属 性 。 有 关 连 接 字 符 串 的 更 多 信 息 参见 GetConnec t。

m_strValidationRule

当 表 定 义 字 段 中 的 数 据 被 改 变 或 加 入 一 个 表 中 时 , 这 个 值 被 用 来 校 验 数据 。 校 验 仅 支 持 使 用 M icrosoft Jet 数 据 库 引 擎 的 数 据 库 。 如 果 要 直 接 获得 校 验 规 则 , 调 用 与 该 表 相 关 的 CDaoTableDef 对 象 的 GetValidationRule 成 员 函 数 。 相 关 的 信 息 参 见 DAO 帮 助 中 的 “ Validation 属 性 ” 主 题 。

m_strValidationText

指 定 了 当 ValidationRule 属 性 所 指 定 的 校 验 规 则 不 被 满 足 时 , 应 用 程 序要 显 示 的 消 息 文 本 。 相 关 的 消 息 参 见 DAO 帮 助 中 的 “ ValidationText 属性 ” 主 题 。

m_lRecordCount

在 表 定 义 对 象 中 访 问 的 记 录 数 目 。 这 个 属 性 是 只 读 的 。 如 果 要 直 接 获 取记 录 的 计 数 , 调 用 CDaoTableDef 对 象 的 GetRecordCount 成 员 函 数 。GetRecordCount 的 文 档 进 一 步 描 述 了 记 录 计 数 。 注 意 如 果 表 中 有 很 多 记

录 , 要 获 得 这 个 计 数 可 能 耗 去 很 多 时 间 。

注 释

CDaoDatabase::GetTableDefInfo 成 员 函 数 获 得 的 信 息 被 保 存 在CDaoTableDefInfo 结 构 中 。 调 用 CDaoDatabase 结 构 的 GetTableDefInfo 成 员 函数 , 表 定 义 对 象 就 保 存 在 的 TableDefs 集 合 中 。 CDaoTableDefInfo 还 在 调 试 版本 中 定 义 了 一 个 Dump 成 员 函 数 。 你 可 以 使 用 Dump 来 转 储 CDaoTableDefInfo 对 象 的 内 容 。

日 期 和 时 间 设 置 是 从 基 表 被 创 建 或 修 改 的 计 算 机 上 获 得 的 。 在 多 用 户 环 境 中 , 用 户 应 该 直 接 从 文 件 服 务 器 获 得 这 些 设 置 以 避 免 DateCreated 和 LastUpdated 属性 产 生 不 一 致 。

有 关 这 个 结 构 和 其 他 MFC DAO Info 结 构 的 信 息 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ DAO 集 合 : 获 得 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoTableDef, CDaoDatabase, CDaoTableDef::CanUpdate, CDaoTableDef::GetAttributes, CDaoTableDef::GetDateCreated, CDaoTableDef::GetDateLastUpdated, CDaoTableDef::GetRecordCount, CDaoTableDef::GetSourceTableName,

CDaoTableDef::GetValidationRule, CDaoTableDef::GetValidationText

CDaoWorkspaceInfo 结 构

CDaoWorkspaceInfo 结 构 具 有 如 下 形 式 :

struct CDaoWorkspaceInfo

{

CString m_strName; // Primary CString m_strUserName; // Secondary BOOL m_bIsolateODBCTrans; // A ll

};

CDaoWorkspaceInfo 结 构 中 包 含 了 为 使 用 数 据 访 问 对 象 ( D A O ) 的 数 据 库 访 问而 定 义 的 工 作 空 间 的 信 息 。 工 作 空 间 是 CDaoWorkspace 类 的 对 象 。 上 面 对Primary,Secondary 和 A ll 的 引 用 指 明 了 CDaoWorkspace 类 的 GetWorkspaceInfo 成 员 函 数 是 如 何 返 回 信 息 的 。

成 员

m_strName

工 作 空 间 的 唯 一 名 字 。 如 果 要 直 接 获 得 这 个 属 性 值 , 调 用 查 询 定 义 对 象的 GetName 成 员 函 数 。 更 多 的 信 息 参 见 DAO 帮 助 中 的 “ Name 属 性 ” 主 题 。

m_strUserName

代 表 了 工 作 空 间 对 象 的 拥 有 者 的 值 。 相 关 的 信 息 参 见 DAO 帮 助 中 的“ UserName 属 性 ” 主 题 。

m_bIsolateODBCTrans

指 明 了 涉 及 同 一 个 ODBC 数 据 库 的 多 用 户 事 务 是 否 被 隔 离 。 更 多 的 信 息参见 CDaoWorkspace::SetIsolateODBCTran s。 相 关 的 信 息 参 见 D A O 帮 助中的 “ IsolateODBCTrans 属 性 ” 主 题 。

注 释

CDaoWorkspace::GetWorkspaceInfo 成 员 函 数 获 取 的 信 息 被 保 存 在CDaoWorkspaceInfo 结 构 中 。 CDaoWorkspaceInfo 还 在 调 试 版 本 中 定 义 了 一 个Dump 成 员 函 数 。 你 可 以 使 用 Dump 来 转 储 CdaoWorkspaceInfo 对 象 的 内 容 。有 关 这 个 对 象 和 其 他 MFC DAO Info 结 构 的 信 息 参 见“ V isual C++ 程 序 员 指 南 ” 中 的 文 章 “ DAO 集 合 : 获 得 DAO 对 象 的 信 息 ” 。

请 参 阅 CDaoWorkspace

CODBCFieldInfo 结 构

CODBCFieldInfo 结 构 具 有 如 下 形 式 :

struct CODBCFieldInfo

{

CString m_strName; SWORD m_nSQLType; U D W O R D m_nPrecision; SWORD m_nScale; SWORD m_nNullability;

};

CODBCFieldInfo 结 构 中 包 含 了 ODBC 数 据 源 中 字 段 的 有 关 信 息 。 如 果 要 获 得这 个 信 息 , 调 用 CRecordset::GetODBCFieldInfo 。

成 员

m_strName

字 段 的 名 字 。

m_nSQLType

字 段 的 SQL 数 据 类 型 。 它 可 以 是 ODBC SQL 数 据 类 型 或 驱 动 程 序 特 定的 SQL 数 据 类 型 。 有 效 的 ODBC SQL 数 据 类 型 的 列 表 参 见“ ODBC SDK 程 序 员 参 考 ”的 附 录 D 中 的“ SQL 数 据 类 型 ”。有 关 驱 动 程 序 特 定 的 S Q L 数 据 类 型 的 信 息 参 看 驱 动 程 序 的 文 档 。

m_nPrecision

字 段 的 最 大 精 度 。 有 关 的 细 节 参 见 “ ODBC SDK 程 序 员 参 考 ” 的 附 录 D

中的 “ 精 度 , 范 围 , 长 度 和 显 示 大 小 ” 。

m_nScale

字 段 的 范 围 。有 关 的 细 节 参 见 ODBC SDK 程 序 员 参 考 的 附 录 D 中 的“ 精度 , 范 围 , 长 度 和 显 示 大 小 ” 。

m_nNullability

一 个 字 段 是 否 允 许 Null 值 。 它 可 以 是 两 个 值 之 一 : 如 果 该 字 段 允 许 Null 值 , 则 为 SQL_NULLABLE ; 如 果 该 字 段 不 允 许 Null 值 , 则 为SQL_NO_NULLS 。

请 参 阅 CRecordset::GetODBCFieldInfo, CRecordset::GetFieldValue

COLORADJUSTMENT 结 构

COLORADJUSTMENT 结 构 具 有 如 下 形 式 :

typedef struct tagCOLORADJUSTMENT { /* ca */ WORD caSize;

WORD caFlags;

WORD caIlluminantIndex; WORD caRedGamma; WORD caGreenGamma; WORD caBlueGamma; WORD caReferenceBlack;

WORD caReferenceWhite; SHORT caContrast;

SHORT caBrightness; SHORT caColorfulness; SHORT caRedGreenTint;

} COLORADJUSTMENT;

COLORADJUSTMENT 结 构 定 义 了 当 StretchBlt 模 式 为 HALFTONE 时 ,W indows

的 StretchBlt 和 StretchDIBits 函 数 使 用 的 颜 色 调 整 值 。

成 员

caSize

指 定 了 该 结 构 以 字 节 为 单 位 的 大 小 。

caFlags

指 定 了 如 何 准 备 输 出 图 象 。 这 个 成 员 可 以 被 设 为 NULL 或 是 下 列 值 的 组合:

  • CA_NEGATIVE 指 定 了 要 显 示 原 图 的 反 相 图 。

  • CA_LOG_FILTER 指 定 了 一 个 对 数 函 数 , 将 对 输 出 颜 色 的

    最 后 深 度起 作 用 。 当 亮 度 较 低 时 , 这 将 增 加 颜 色 的 对 比 度 。

caIlluminantIndex

指 定 了 光 源 的 亮 度 , 图 象 将 在 该 光 源 下 显 示 。 这 个 成 员 可 以 被 设 为 下 列值 中 的 一 个 :

  • ILLUMINANT_EQUAL_ENERGY

  • ILLUMINANT_A

  • ILLUMINANT_B

  • ILLUMINANT_C

  • ILLUMINANT_D50

  • ILLUMINANT_D55

  • ILLUMINANT_D65

  • ILLUMINANT_D75

  • ILLUMINANT_F2

  • ILLUMINANT_TURNGSTEN

  • ILLUMINANT_DAYLIGHT

  • ILLUMINANT_FLUORESCENT

  • ILLUMINANT_NTSC

caRedGamma

指 定 了 原 色 中 红 原 色 的 n 次 gamma 修 正 值 。这 个 值 必 须 介 于 2500 ~ 65000

之 间 。 如 果 值 等 于 10000 , 则 意 味 着 没 有 gamma 修 正 。

caGreenGamma

指 定 了 原 色 中 绿 原 色 的 n 次 gamma 修 正 值 。这 个 值 必 须 介 于 2500 ~ 65000

之 间 。 如 果 值 等 于 10000 , 则 意 味 着 没 有 gamma 修 正 。

caBlueGamma

指 定 了 原 色 中 蓝 原 色 的 n 次 gamma 修 正 值 。这 个 值 必 须 介 于 2500 ~ 65000

之 间 。 如 果 值 等 于 10000 , 则 意 味 着 没 有 gamma 修 正 。

caReferenceBlack

指 定 了 源 色 的 黑 色 参 考 值 。 任 何 比 这 个 值 暗 的 颜 色 被 当 作 黑 色 。 这 个 值必 须 介 于 0 ~ 4000 之 间 。

caReferenceWhite

指 定 了 源 色 的 白 色 参 考 值 。 任 何 比 这 个 值 亮 的 颜 色 被 当 作 白 色 。 这 个 值必 须 介 于 6000 ~ 10000 之 间 。

caContrast

指 定 了 对 源 对 象 应 用 的 对 比 度 值 。 这 个 值 必 须 介 于 - 100 ~ 100 之 间 。 如果 该 值 为 0 则 意 味 着 没 有 对 比 度 调 整 。

caBrightness

指 定 了 对 源 对 象 应 用 的 亮 度 值 。 这 个 值 必 须 介 于 - 100 ~ 100 之 间 。 如 果该 值 为 0 , 则 意 味 着 没 有 亮 度 调 整 。

caColorfulness

指 定 了 对 源 对 象 应 用 的 饱 和 度 值 。 这 个 值 必 须 介 于 - 100 ~ 100 之 间 。 如果 该 值 为 0 , 则 意 味 着 没 有 饱 和 度 调 整 。

caRedGreenTint

指 定 了 应 用 于 源 对 象 的 红 或 绿 校 正 值 。 这 个 值 必 须 介 于 - 100 ~ 100 之 间 。正 数 将 会 向 红 色 调 整 , 而 负 数 将 会 向 绿 色 调 整 。 如 果 这 个 值 为 0 , 则 意味 着 没 有 调 整 。

请 参 阅 CDC::GetColorAdjustment

COMPAREITEMSTRUCT 结 构

COMPAREITEMSTRUCT 数 据 结 构 具 有 这 种 形 式 :

typedef struct tagCOMPAREITEMSTRUCT { UINT CtlType;

UINT CtlID;

HWND hwndItem; UINT itemID1; DWORD itemData1; UINT itemID2; DWORD itemData2;

} COMPAREITEMSTRUCT;

COMPAREITEMSTRUCT 结 构 为 有 序 的 自 画 列 表 框 或 组 合 框 中 的 两 项 提 供 了 标识 符 和 来 自 应 用 程 序 的 数 据 。 当 应 用 程 序 在 用 CBS_SORT 或 LBS_SORT 风 格

创 建 的 自 画 列 表 框 或 组 合 框 中 加 入 一 个 新 项 时 , W indows 将 给 拥 有 者 发 送 一 个WM_COMPAREITEM 消 息 。 这 个 消 息 的 lParam 参 数 中 包 含 了 指 向COMPAREITEMSTRUCT 结 构 的 长 指 针 。 通 过 接 收 这 个 消 息 , 拥 有 者 比 较 这 个两 个 项 并 返 回 一 个 值 , 指 明 哪 一 项 在 前 。

成 员

CtlType

ODT_LISTBOX ( 这 指 定 了 一 个 自 画 列 表 框 )或 ODT_COMBOBOX ( 这指 定 了 一 个 自 画 组 合 框 ) 。

CtlID

列 表 框 或 组 合 框 的 控 制 ID 。

hwndItem

控 件 的 窗 口 句 柄 。

itemID1

将 要 比 较 的 列 表 框 或 组 合 框 中 第 一 项 的 索 引 。

itemData1

应 用 程 序 为 要 比 较 的 第 一 项 提 供 的 数 据 。 这 个 值 在 把 这 个 项 加 入 组 合 框或 列 表 框 时 给 定 。

itemID 2

将 要 比 较 的 列 表 框 或 组 合 框 中 第 二 项 的 索 引 。

itemData2

应 用 程 序 为 要 比 较 的 第 二 项 提 供 的 数 据 。 这 个 值 在 把 这 个 项 加 入 组 合 框或 列 表 框 时 给 定 。

请 参 阅 CWnd::OnCompareItem

CREATESTRUCT 结 构

CREATESTRUCT 结 构 具 有 如 下 形 式 :

typedef struct tagCREATESTRUCT { LPVOID lpCreateParams; HANDLE hInstance; HMENU hMenu;

HWND hwndParent;

int cy;

int cx;

int y;

int x;

LONG style;

LPCSTR lpszName;

LPCSTR lpszClass;

DWORD dwExStyle;

} CREATESTRUCT;

CREATESTRUCT 结 构 定 义 了 传 递 给 应 用 程 序 的 窗 口 过 程 的 初 始 化 参 数 。

成 员

lpCreateParams

指 向 将 被 用 于 创 建 窗 口 的 数 据 的 指 针 。

hInstance

标 识 了 拥 有 新 窗 口 的 模 块 的 模 块 实 例 的 句 柄 。

hMenu

标 识 了 要 被 用 于 新 窗 口 的 菜 单 。 如 果 是 子 窗 口 , 则 包 含 整 数 ID 。

hwndParent

标 识 了 拥 有 新 窗 口 的 窗 口 。 如 果 新 窗 口 是 一 个 顶 层 窗 口 , 这 个 参 数 可 以为 NULL 。

cy

指 定 了 新 窗 口 的 高 。

cx

指 定 了 新 窗 口 的 宽 。

y

x

style

指 定 了 新 窗 口 的 左 上 角 的 y 轴 坐 标 。 如 果 新 窗 口 是 一 个 子 窗 口 , 则 坐 标是 相 对 于 父 窗 口 的 ; 否 则 坐 标 是 相 对 于 屏 幕 原 点 的 。

指 定 了 新 窗 口 的 左 上 角 的 x 轴 坐 标 。 如 果 新 窗 口 是 一 个 子 窗 口 , 则 坐 标是 相 对 于 父 窗 口 的 ; 否 则 坐 标 是 相 对 于 屏 幕 原 点 的 。

指 定 了 新 窗 口 的 风 格 。

lpszName

指 向 一 个 以 null 结 尾 的 字 符 串 , 指 定 了 新 窗 口 的 名 字 。

lpszClass

指 向 一 个 以 null 结 尾 的 字 符 串 , 指 定 了 新 窗 口 的 W indows 类 名 ( 一 个

WNDCLASS 结 构 ; 更 多 的 信 息 参 见 W in32 SDK 文 档 ) 。

dwExStyle

指 定 了 新 窗 口 的 扩 展 风 格 。

请 参 阅 CWnd::OnCreate

DELETEITEMSTRUCT 结 构

DELETEITEMSTRUCT 结 构 具 有 如 下 形 式 :

typedef struct tagDELETEITEMSTRUCT { /* ditms */ UINT CtlType;

UINT CtlID;

UINT itemID;

H W N D hwndItem;

UINT itemData;

} DELETEITEMSTRUCT;

DELETEITEMSTRUCT 结 构 指 定 一 个 被 删 除 的 自 画 列 表 框 或 组 合 框 项 。 当 从 列表 框 或 组 合 框 中 删 除 一 项 或 当 列 表 框 或 组 合 框 被 销 毁 时 , 对 于 被 删 除 的 每 一项 , W indows 向 它 的 拥 有 者 发 送 WM_DELETEITEM 消 息 。 消 息 的 lParam 参数 包 含 指 向 这 个 结 构 的 指 针 。

成 员

CtlType

是 ODT _LISTBOX ( 对 于 自 画 列 表 框 ) 或 ODT_COMBOBOX ( 对 于 自画 组 合 框 ) 。

CtlID

itemID

指 定 列 表 框 或 组 合 框 的 标 识 符 。

指 定 将 被 删 除 的 项 在 列 表 框 或 组 合 框 中 的 索 引 。

hwndItem

控 件 的 标 识 符 。

itemData

指 定 程 序 定 义 的 与 该 项 相 关 的 数 据 。 此 值 通 过 消 息 的 lParam 参 数 传 递 给控 件 , 而 这 一 消 息 向 列 表 框 或 组 合 框 中 增 加 项 。

请 参 阅 CWnd::OnDeleteItem

DEVMODE 结构

DEVMODE 结 构 具 有 如 下 形 式 :

typedef struct _devicemode { /* dvmd */ TCHAR dmDeviceName[32];

WORD dmSpecVersion; WORD dmDriverVersion; WORD dmSize;

WORD dmDriverExtra;

DWORD dmFields;

short dmOrientation; short dmPaperSize; short dmPaperLength; short dmPaperWidth; short dmScale;

short dmCopies;

short dmDefaultSource; short dmPrintQuality; short dmColor;

short dmDuplex; short dmYResolution; short dmTTOption; short dmCollate;

TCHAR dmFormName[32]; WORD dmUnusedPadding; USHORT dmBitsPerPel; DWORD dmPelsWidth; DWORD dmPelsHeight; DWORD dmDisplayFlags; DWORD dmDisplayFrequency;

} DEVMODE;

DEVMODE 数 据 结 构 中 包 含 了 有 关 设 备 初 始 化 和 打 印 机 环 境 的 信 息 。

成 员

dmDeviceName

指 定 了 驱 动 程 序 支 持 的 设 备 名 称 ; 例 如 , 对 于 P C L /H P L a se r J e t® , 会 是

PCL/HP 激 光 打 印 机 。 这 个 字 符 串 在 设 备 驱 动 程 序 之 间 是 相 互 不 同 的 。

dmSpecVersion

指 定 了 初 始 化 数 据 的 版 本 数 字 , 这 个 结 构 就 基 于 这 些 数 据 。

dmDriverVersion

指 定 了 打 印 机 驱 动 程 序 开 发 商 分 配 的 打 印 机 驱 动 程 序 版 本 号 。

dmSize

指 定 了 DEVMODE 结 构 的 大 小 ,以 字 节 为 单 位 ,不 包 括 dmDriverDat a(与 设 备 有 关 ) 成 员 。 如 果 应 用 程 序 仅 操 作 数 据 中 与 驱 动 程 序 无 关 的 部 分 , 它 就 可 以 使 用 这 个 成 员 以 确 定 该 结 构 的 长 度 , 而 并 不 需 要 有 不 同 版 本 的记 录 。

dmDriverExtra

包 含 了 这 个 结 构 后 面 的 私 有 驱 动 程 序 数 据 的 数 目 , 以 字 节 为 单 位 。 如 果设 备 驱 动 程 序 不 使 用 该 设 备 独 有 的 信 息 , 就 把 这 个 成 员 设 为 零 。

dmFields

指 定 了 D E V M O D E 结 构 的 其 余 成 员 中 哪 些 已 被 初 始 化 。 第 0 位 ( 定 义 为DM ) ORIENTATION ) 代 表 dmOrientation , 第 1 位 ( 定 义 为DM_PAPERSIZE ) 代 表 dmPaperSize 等 等 。 打 印 机 驱 动 出 现 仅 支 持 那 些适 合 打 印 技 术 的 成 员 。

dmOrientation

选 择 纸 的 方 向 。 这 个 成 员 可 以 为 DMORIENT_PORTRAIT ( 1 ) 或

DMORIENT_ LANDSCAPE ( 2 )。

dmPaperSize

选 择 将 用 于 打 印 的 纸 张 大 小 。 如 果 纸 张 的 长 度 和 宽 度 都 用 dmPaperLength 和 dmPaperWidth 成 员 来 设 置 的 话 , 这 个 成 员 可 以 被 设 为 0 。 否 则 , dwPaperSize 成 员 可 以 被 设 为 以 下 值 之 一 :

DMPAPER_LETTER letter , 8 1/2 × 11 英寸MPAPER_LEGAL Legal, 8 1/2 × 14 英寸DMPAPER_A4 A4 letter, 210 × 297 毫米DMPAPER_CSHEET C lette r, 17 × 22 英寸DMPAPER_DSHEET D letter, 22 × 34 英 寸DMPAPER_ESHEET E letter, 3 4 × 44 英 寸

DMPAPER_LETTERSMALL letter small , 8 1 /2 × 11 英寸

DMPAPER_TABLOID Tabloid , 1 1 × 17 英 寸

DMPAPER_LEDGER Ledger , 1 7 × 11 英 寸

DMPAPER_STATEMENT Statement , 5 1 / 2 × 8 1/2 英 寸

DMPAPER_EXECUTIVE Executive , 7 1 /4 × 10 1/2 英 寸

DMPAPER_A3 A3 Sheet, 2 9 7 × 420 毫米

DMPAPER_A4SMALL A4 Small Sheet , 2 1 0 × 297 毫米

DMPAPER_A5

A5 Sheet,

1 4 8

×

210

毫米

DMPAPER_B4

B4 Sheet,

2 5 0

×

354

毫 米

DMPAPER_B5

B5 Sheet,

182

×

257

毫 米

DMPAPER_FOLIO Folio, 8 1/2 × 13 英 寸DMPAPER_QUARTO Quarto, 215 × 275 毫 米DMPAPER_10X14 10 × 14 英 寸

DMPAPER_11X17 11 × 17 英 寸

D M P A P E R _ N O T E N o t e , 8 1 /2 × 11 英 寸

DMPAPER_ENV_9 #9 EnVelope , 3 7 /8 × 8 7/8 英 寸

DMPAPER_ENV_10

#10 EnVelope , 4

1 /8

×

9 1/2 英寸

DMPAPER_ENV_11

#11 EnVelope , 4

1 /2

×

10 3/8 英寸

DMPAPER_ENV_12

#12 EnVelope , 4

3 /4

×

11 英 寸

DMPAPER_ENV_14 #14 EnVelope , 5 × 11 1/2 英 寸

DMPAPER_ENV_DL DL EnVelope , 1 1 0 × 220 毫 米

DMPAPER_ENV_C5

C5 EnVelope ,

1 6 2 × 229 毫 米

DMPAPER_ENV_C3

C3 EnVelope ,

3 2 4 × 458 毫 米

DMPAPER_ENV_C4

C4 EnVelope ,

2 2 9 × 324 毫 米

DMPAPER_ENV_C6 C6 EnVelope , 1 1 4 × 162 毫 米

DMPAPER_ENV_C65 C65 EnVelope , 1 1 4 × 229 毫 米

DMPAPER_ENV_B4

B4 EnVelope ,

2 5 0 × 353 毫 米

DMPAPER_ENV_B5

B5 EnVelope ,

1 7 6 × 250 毫 米

DMPAPER_ENV_B6

B6 EnVelope ,

1 7 6 × 125 毫 米

DMPAPER_ENV_ITALY Italy EnVelope , 1 1 0 × 230 毫 米

DMPAPER_ENV_MONARCH Monarch EnVelope , 3 7 / 8 × 7 1/2 英 寸

DMPAPER_ENV_PERSONAL 6 3/4 EnVelope, 3 5 /8 × 6 1/2 英寸

D M P A P E R _ F A N F O L D _ U S U S S td F a n fo ld , 1 4 7 /8 × 11 英 寸

D M P A P E R _ F A N F O L D _ S T D _ G E R M A N G e rm a n S td F a n fo ld , 8 1 /2 × 12 英寸 D M P A P E R _ F A N F O L D _ L G L _ G E R M A N G e rm a n L e g a l F a n fo ld , 8 1 /2 × 13 英寸

dmPaperLength

重 定 义 由 dmPaperSize 成 员 指 定 的 纸 张 长 度 , 可 用 于 自 定 义 纸 张 大 小 , 也 可 以 用 于 点 阵 打 印 机 , 这 种 打 印 机 能 打 出 任 意 长 度 的 纸 张 。 这 些 值 与这 个 结 构 中 其 他 指 定 物 理 长 度 的 值 都 是 以 0.1 毫 米 为 单 位 的 。

dmPaperWidth

重 载 由 dmPaperSize 成 员 指 定 的 纸 张 宽 度 。

dmScale

指 定 了 打 印 输 出 的 缩 放 因 子 。 实 际 的 页 面 大 小 为 物 理 纸 张 的 大 小 乘 以

dmScale/100 。 例 如 , 对 于 信 纸 大 小 的 纸 张 , 如 果 dmScale 的 值 为 50 , 它将 可 以 容 纳 相 当 于 17 × 22 英 寸 页 面 的 内 容 , 因 为 输 出 的 文 本 和 图 形 的宽 、 高 都 将 是 原 始 大 小 的 一 半 。

dmCopies

如 果 设 备 支 持 多 页 拷 贝 , 则 选 择 了 要 打 印 的 拷 贝 数 目 。

dmDefaultSource

保 留 , 必 须 为 0 。

dmPrintQuality

指 定 了 打 印 机 的 分 辨 率 。 有 四 种 预 定 义 的 与 设 备 无 关 的 值 :

DMRES_HIGH DMRES_MEDIUM DMRES_LOW DMRES_DRAFT

如 果 给 定 了 一 个 正 值 , 它 就 指 定 了 每 英 寸 打 印 的 点 数 ( DPI ) , 因 此 是

与 设 备 有 关 的 。

dmColor

对 于 彩 色 打 印 机 , 在 彩 色 和 单 色 之 间 切 换 。 下 面 是 可 能 的 取 值 :

  • DMCOLOR_COLOR

  • DMCOLOR_MONOCHROME

dmDuplex

为 支 持 双 面 打 印 的 打 印 机 选 择 双 面 打 印 方 式 。 可 能 的 取 值 如 下 :

  • DMDUP_SIMPLEX

  • DMDUP_HORIZONTAL

  • DMDUP_VERTICAL

dmYResolution

指 定 了 打 印 机 在 y 方 向 的 分 辨 率 , 以 每 英 寸 的 点 数 为 单 位 。 如 果 打 印 机对 该 成 员 进 行 了 初 始 化 , dmPrintQuality 成 员 指 定 了 打 印 机 在 x 方 向 的 分辨 率 , 以 每 英 寸 点 数 为 单 位 。

dmTTOption

指 明 如 何 打 印 TrueType 字 体 。 这 个 成 员 可 以 取 如 下 值 之 一 :

  • DMTT_BITMAP 把 TrueType 字 体 作 为 图 形 打 印 。 这 是 点 阵 打

    印 机的 缺 省 动 作 。

  • DMTT_DOWNLOAD 将 TrueType 字 体 作 为 软 字 体 下 载 。 这 是 使

    用打 印 机 控 制 语 言 ( PCL ) 的 惠 普 打 印 机 的 缺 省 动 作 。

  • DMTT_SUBDEV 用 TrueType 字 体 替 换 设 备 字 体 。 这 是 P o st S c

    r i p t®

打 印 机 的 缺 省 动 作 。

dmCollate

指 定 在 打 印 多 份 拷 贝 的 时 候 是 否 使 用 校 对 。 使 用 DMCOLLATE_FALSE

后 能 够 得 到 更 快 更 有 效 的 输 出 , 因 为 不 管 要 打 印 多 少 份 拷 贝 , 只 向 打 印机 传 送 一 次 数 据 。 打 印 机 仅 被 通 知 再 打 印 一 页 。 这 个 成 员 可 以 是 下 列 值之 一 :

  • DMCOLLATE_TRUE 当 打 印 多 份 拷 贝 时 进 行 校 对 。

  • DMCOLLATE_FALSE 当 打 印 多 份 拷 贝 时 不 进 行 校 对 。

dmFormName

指 定 了 要 使 用 的 格 式 名 字 。 例 如 , Letter 或 Legal 。 这 些 名 字 的 完 整 集 合可 以 通 过 W indows 的 EnumForms 函 数 获 得 。

dmUnusedPadding

用 于 将 结 构 对 齐 到 DWORD 边 界 。 不 能 使 用 或 引 用 这 个 成 员 。 它 的 名 字和 用 法 是 保 留 的 , 在 以 后 的 版 本 中 可 能 会 变 化 。

dmBitsPerPel

指 定 了 显 示 设 备 的 颜 色 分 辨 率 , 以 像 素 的 位 数 为 单 位 。 例 如 , 16 色 使 用

4 位 , 256 色 使 用 8 位 , 而 65536 色 使 用 16 位。

dmPelsWidth

指 定 了 可 见 设 备 表 面 的 以 像 素 为 单 位 的 宽 度 。

dmPelsHeight

指 定 了 可 见 设 备 表 面 的 以 像 素 为 单 位 的 高 度 。

dmDisplayFlags

指 定 了 设 备 的 显 示 模 式 。 下 面 是 有 效 的 标 志 :

  • DM_GRAYSCALE 指 定 显 示 使 用 了 无 颜 色 设 备 。 如 果 没 有 设

    置 这 个标 志 , 就 假 定 彩 色 模 式 。

  • DM_INTERLACED 指 定 了 隔 行 显 示 模 式 。 如 果 没 有 设 置 这 个

    标 志 , 就 假 定 非 隔 行 模 式 。

dmDisplayFrequency

指 定 了 显 示 设 备 的 特 定 模 式 所 使 用 的 以 赫 兹 为 单 位 的 频 率 ( 每 秒 的 周 期数 ) 。

注 释

在 dmDisplayMode 成 员 后 面 将 是 一 些 设 备 驱 动 程 序 的 私 有 数 据 。 以 字 节 为 单 位的 私 有 数 据 数 目 是 由 dmDriverExtra 成 员 指 定 的 。

请 参 阅 CDC::ResetDC, CPrintDialog::GetDevMode

DEVNAMES 结 构

DEVNAMES 结 构 具 有 如 下 形 式 :

typedef struct tagDEVNAMES { /* dvnm */ W O R D w D riverOffset;

W O R D wDeviceOffset;

W O R D wOutputOffset; W O R D wDefault;

/* wDefault 后 面 是 驱 动 程 序 , 设 备 和 端 口 名 字 符 串 */

} DEVNAMES;

DEVNAMES 结 构 中 包 含 的 字 符 串 指 定 了 打 印 机 的 驱 动 程 序 , 设 备 和 输 出 端 口的 名 字 。 PrintDlg 函 数 使 用 这 些 字 符 串 来 初 始 化 系 统 定 义 的 Print 对 话 框 中 的 成员 。 当 用 户 关 闭 对 话 框 时 , 将 在 这 个 结 构 中 返 回 有 关 选 中 的 打 印 机 的 信 息 。

成 员

wDriverOffset

( 输 入 /输 出 ) 指 定 了 一 个 以 null 结 尾 的 字 符 串 的 偏 移 , 其 中 包 含 了 设 备驱 动 程 序 的 文 件 名 ( 没 有 扩 展 名 ) 。 对 于 输 入 , 这 个 字 符 串 将 被 用 于 确定 要 显 示 在 对 话 框 中 的 打 印 机 。

wDeviceOffset

( 输 入 /输 出 ) 指 定 了 以 null 结 尾 的 字 符 串 ( 包 括 null 在 内 , 最 多 有 32 个 字 节 ) , 其 中 包 含 了 设 备 的 名 字 。 这 个 字 符 串 必 须 与 D E V M O D E 结 构中的 dmDeviceName 成 员 相 同 。

wOutputOffset

( 输 入 /输 出 )指 定 了 以 null 结 尾 的 字 符 串 ,其 中 包 含 了 物 理 输 出 设 备( 输出 端 口 ) 的 DOS 设 备 名 。 这 个 字 符 串 必 须 与 DEVMODE 结 构 中 的

dmDeviceName 成 员 相 同 。

wDefault

指定 DEVNAMES 结 构 中 包 含 的 字 符 串 是 否 表 示 了 缺 省 打 印 机 。 这 个 字符 串 被 用 来 检 验 自 最 近 一 次 打 印 操 作 以 来 , 缺 省 打 印 机 是 否 发 生 变 化 。对 于 输 入 操 作 , 如 果 设 置 了 DN_DEFAULTPRN 标 志 , DEVNAMES 结构 中 的 其 它 值 将 被 检 验 , 与 当 前 的 缺 省 打 印 机 作 比 较 。 如 果 有 字 符 串 不匹 配 , 就 会 显 示 一 个 警 告 信 息 , 通 知 用 户 可 能 需 要 重 新 格 式 化 文 档 。 对于 输 出 操 作 , 只 有 当 显 示 了 Print Setup 对 话 框 并 且 用 户 选 择 了 O K 按 钮时 , wDefault 成 员 才 会 发 生 改 变 。 如 果 选 择 了 缺 省 的 打 印 机 , 就 会 设 置DN_DEFAULTPRN 标 志 。 如 果 选 择 了 一 个 其 它 打 印 机 , 则 不 会 设 置 这个 标 志 。 这 个 成 员 中 其 它 所 有 的 位 都 是 保 留 的 , 被 Print 对 话 框 过 程 内 部使 用 。

请 参 阅 CPrintDialog::CreatePrinterDC

DRAW ITEMSTRUCT 结 构

DRAWITEMSTRUCT 结 构 具 有 如 下 形 式 :

typedef struct tagDRAWITEMSTRUCT { UINT CtlType;

UINT CtlID;

UINT itemID;

UINT itemAction;

UINT itemState; HWND hwndItem; HDC hDC;

RECT rcItem;

DWORD itemData;

} DRAWITEMSTRUCT;

DRAWITEMSTRUCT 结 构 提 供 了 拥 有 者 窗 口 在 决 定 如 何 画 出 自 画 控 件 或 菜 单项 时 必 须 得 到 的 信 息 。 自 画 控 件 或 菜 单 项 的 拥 有 者 窗 口 在 WM_DRAWITEM 消息 的 lParam 参 数 中 接 收 到 一 个 指 向 这 个 结 构 的 指 针 。

成 员

CtlType

控 件 类 型 。 控 件 类 型 的 取 值 如 下 :

  • ODT_BUTTON 自 画 按 钮

  • ODT_COMBOBOX 自 画 组 合 框

  • ODT_LISTBOX 自 画 列 表 框

  • ODT_MENU 自 画 菜 单

  • ODT_LISTVIEW 列 表 视 控 件

CtlID itemID

  • ODT_STATIC 自画 Static 控 件

  • ODT_TAB Tab 控 件

组 合 框 , 列 表 框 或 按 钮 的 控 制 ID 。 对 菜 单 不 使 用 这 个 成 员 。

菜 单 的 菜 单 项 ID 或 是 组 合 框 或 列 表 框 中 的 项 的 索 引 。 对 于 空 的 列 表 框 或组 合 框 , 这 个 成 员 是 一 个 负 值 , 这 允 许 应 用 程 序 只 在 rcItem 成 员 指 定 的位 置 画 出 焦 点 矩 形 , 既 使 控 件 中 没 有 项 。 这 样 用 户 就 可 以 知 道 列 表 框 或组 合 框 是 否 具 有 输 入 焦 点 。 itemAction 成 员 中 位 的 设 置 决 定 了 该 矩 形 是否 应 当 画 得 就 象 列 表 框 或 组 合 框 拥 有 输 入 焦 点 那 样 。

itemAction

定 义 了 要 求 的 绘 图 动 作 。 它 可 以 是 下 面 位 中 的 一 个 或 多 个 :

  • ODA_DRAWENTIRE 当 需 要 画 出 整 个 控 件 时 设 置 该 位 。

  • ODA_FOCUS 当 控 件 获 得 或 失 去 输 入 焦 点 时 设 置 该 位 。 如

    果 要 确 定控 件 是 否 拥 有 输 入 焦 点 , 应 该 检 查 itemState 成 员 。

  • ODA_SELECT 当 选 择 项 发 生 变 化 时 设 置 该 位 。 如 果 要 确 定

    新 的 选

择 状 态 , 应 该 检 查 itemState 成 员 。

itemState

指 定 了 完 成 当 前 绘 图 动 作 后 项 的 可 视 状 态 。 如 果 要 使 菜 单 项 无 效 , 则 会设置 ODS_GRAYED 标 志 。 状 态 标 志 如 下 :

  • ODS_CHECKED 如 果 要 标 记 菜 单 项 则 设 置 该 位 。 仅 对 菜 单

    使 用 。

  • ODS_DISABLED 如 果 要 把 该 项 画 成 禁 止 状 态 则 设 置 该 位 。

  • ODS_FOCUS 如 果 该 项 拥 有 输 入 焦 点 则 设 置 该 位 。

  • ODS_GRAYED 如 果 要 使 该 项 变 灰 则 设 置 该 位 。 仅 对 菜 单 使

    用 。

  • ODS_SELECTED 如 果 该 项 被 选 中 则 设 置 该 位 。

  • ODS_COMBOBOXEDIT 绘 图 发 生 在 自 画 组 合 框 控 件 的 选 择 区

    域( 编辑 控 件 ) 。

  • ODS_DEFAULT 该 项 为 缺 省 项 。

hwndItem

指 定 了 组 合 框 , 列 表 框 和 按 钮 控 件 的 窗 口 句 柄 。 指 定 了 包 含 菜 单 项 的 菜单 的 句 柄 ( HMENU ) 。

hDC rcItem

标 识 了 一 个 设 备 环 境 。 在 控 件 上 进 行 绘 图 操 作 时 必 须 使 用 这 个 设 备 环 境 。

hDC 成 员 指 定 的 设 备 环 境 中 的 矩 形 , 定 义 了 将 要 画 出 的 控 件 的 边 界 。W indows 自 动 将 画 出 的 任 何 东 西 裁 剪 在 组 合 框 , 列 表 框 和 按 钮 的 设 备 环境 之 内 ,但 是 它 不 裁 剪 菜 单 项 。在 画 出 菜 单 项 的 时 候 ,拥 有 者 不 能 在 rcItem 成 员 所 定 义 的 矩 形 之 外 绘 图 。

itemData

对 于 组 合 框 或 列 表 框 , 这 个 成 员 包 含 了 下 面 的 函 数 传 递 给 列 表 框 的 值 :

  • CComboBox::AddString

  • CComboBox::InsertString

  • CListBox::AddString

  • CListBox::InsertString

对 于 菜 单 , 这 个 成 员 包 含 了 下 面 的 函 数 传 递 给 菜 单 的 值 :

  • CMenu::AppendMenu

  • CMenu::InsertMenu

  • CMenu::ModifyMenu

请 参 阅 CWnd::OnDrawItem

EXTENSION_CONTROL_BLOCK 结 构

EXTENSION_CONTROL_BLOCK 结 构 具 有 如 下 形 式 :

typedef struct _EXTENSION_CONTROL_BLOCK {

DWORD

cbSize;

//IN

DWORD

dwVersion

//IN

HCONN

ConnID;

//IN

DWORD

dwHttpStatusCode;

//OUT

CHAR

lpszLogData[HSE_LOG_BUFFER_LEN];

//OUT

LPSTR

lpszMethod;

//IN

LPSTR

lpszQueryString;

//IN

LPSTR

lpszPathInfo;

//IN

LPSTR

lpszPathTranslated;

//IN

DWORD

cbTotalBytes;

//IN

DWORD

cbAvailable;

//IN

LPBYTE

lpbData;

//IN

LPSTR

lpszContentType;

//IN

BOOL ( W INAPI * GetServerVariable ) ( HCONN hConn,

LPSTR lpszVariableName,

LPVOID lpvBuffer, LPDWORD lpdwSize );

BOOL ( W INAPI * WriteClient )

( HCONN ConnID,

LPVOID Buffer, LPDWORD lpdwBytes, DWORD dwReserved );

BOOL ( W INAPI * ReadClient )

( HCONN ConnID,

LPVOID lpvBuffer, LPDWORD lpdwSize );

BOOL ( W INAPI * ServerSupportFunction ) ( HCONN hConn,

DWORD dwHSERRequest, LPVOID lpvBuffer, LPDWORD lpdwSize, LPDWORD lpdwDataType );

} EXTENSION_CONTROL_BLOCK, *LPEXTENSION_CONTROL_BLOCK;

服 务 器 通 过 E XTENSION_CONTROL_BLOCK .与 ISA 通 讯 。

上 面 对 IN 和 O U T 的 引 用 指 明 该 成 员 是 适 用 于 发 送 到 扩 展 的 消 息 ( IN ) 还 是 来自 扩 展 的 消 息 ( O U T ) 。

成 员

EXTENSION_CONTROL_BLOCK 结 构 包 括 如 下 的 域 :

cbSize

结 构 的 大 小 。

dwVersion

HTTP_FILTER_REVISION 的 版 本 信 息 。 H IW O R D 中 包 含 了 主 版 本 号 ,

LOWORD 中 包 含 了 次 版 本 号 。

ConnID

由 HTTP 服 务 器 分 配 的 唯 一 数 字 。 它 不 能 被 修 改 。

dwHttpStatusCode

当 完 成 请 求 时 当 前 事 务 的 状 态 。 可 能 是 下 列 值 之 一 :

  • HTTP_STATUS_BAD_REQUEST

  • HTTP_STATUS_AUTH_REQUIRED

  • HTTP_STATUS_FORBIDDEN

  • HTTP_STATUS_NOT_FOUND

  • HTTP_STATUS_SERVER_ERROR

  • HTTP_STATUS_NOT_IMPLEMENTED

lpszLogData

大 小 为 HSE_LOG_BUFFER_LEN 的 缓 冲 区 。 包 含 了 当 前 事 务 的 与 ISA 相 关 的 以 null 结 尾 的 登 记 信 息 字 符 串 , 这 个 登 记 信 息 将 被 输 入 到 HTTP 服 务 器 日 志 。 出 于 管 理 的 目 的 , 为 HTTP 服 务 器 和 ISA 事 务 维 护 一 个 日志 文 件 会 非 常 有 用 。

lpsz M ethod

生 成 请 求 的 方 法 。 与 CGI 变 量 REQUEST_METHOD 等 价 。

lpszQueryString

包 含 查 询 信 息 的 以 null 结 尾 的 字 符 串 。 与 CGI 变 量 QUERY_STRING 等价。

lpszPathInfo

以 null 结 尾 的 字 符 串 , 包 含 了 客 户 给 出 的 附 加 路 径 信 息 。 与 CGI 变 量

PATH_INFO 等 价 。

lpszPathTranslated

以 null 结 尾 的 字 符 串 , 包 含 了 转 换 路 径 。 与 CGI 变 量

PATH_TRANSLATED 等 价 。

cbTotalBytes

要 从 客 户 端 接 收 的 字 节 总 数 。 与 CGI 变 量 CONTENT_LENGTH 等 价 。如 果 这 个 值 为 0xffffffff, 则 有 4G 或 更 多 的 数 据 。 在 这 种 情 况 下 , 必 须调用 C H ttpServerContext:: ReadClient 直 到 没 有 更 多 的 数 据 。

cbAvailable

lpbData 所 指 向 的 缓 冲 区 的 可 能 容 量 。 如 果 cbTotalBytes 与 cbAvailable 相 同 , 变 量 lpbData 指 向 的 缓 冲 区 将 包 含 了 客 户 发 出 的 所 有 数 据 。 否 则cbTotalBytes 将 包 含 接 收 到 的 数 据 的 总 字 节 数 。 ISA 将 需 要 适 用 回 调 函 数C H ttpServerContext::ReadClient 来 读 出 数 据 的 剩 余 部 分 ( 从 偏 移 为cbAvailable 的 位 置 开 始 ) 。

lpbData

指 向 一 个 大 小 为 cbAvailable 的 缓 冲 区 , 其 中 包 含 了 客 户 发 出 的 数 据 。

lpszContentType

以 null 结 尾 的 字 符 串 , 包 含 了 客 户 发 出 数 据 的 内 容 的 类 型 。 与 CGI 变 量

CONTENT_TYPE 等 价 。

GetServerVariable

这 个 函 数 将 与 HTTP 连 接 或 服 务 器 本 身 有 关 的 信 息 ( 包 括 CGI 变 量 ) 拷贝 到 一 个 缓 冲 区 中 。 GetServerVariable 接 收 如 下 的 参 数 :

  • hConn 连 接 的 句 柄 。

  • lpszVariableName 以 null 结 尾 的 字 符 串 , 指 明 被 要 求 的 是

    哪 个 变 量 。变 量 的 名 字 为 :

变量名 描述

ALL_HTTP 所 有 还 没 有 被 解 析 为 一 个 上 面 的 变 量 之 一 的HTTP 头 。 这 些 变 量 的 形 式 为 : HTTP_< 起 始域 名 >

AUTH_PASS 当 客 户 提 供 密 码 时 , 这 将 获 得 与REMOTE_USER 对 应 的 密 码 。它 是 一 个 以 null 结 尾 的 字 符 串

AUTH_TYPE 包 含 了 使 用 的 鉴 定 的 类 型 。 例 如 , 如 果 使 用了 Basic 鉴 定 , 该 字 符 串 为 “ Basic ” 。 对 于W indowsNTChallenge-response , 这 个 字 符 串为 “ NTLM ” 。 其 它 鉴 定 模 式 将 具 有 别 的 字 符串 。 因 为 可 以 在 Internet 服 务 器 中 加 入 新 的 鉴定 类 型 , 所 以 要 列 出 所 以 可 能 的 字 符 串 是 不现 实 的 。 如 果 该 字 符 串 为 空 , 则 没 有 使 用 鉴定

CONTENT_LENGTH 脚 本 能 够 期 望 从 客 户 接 收 的 字 节 数

CONTENT_TYPE 在 POST 请 求 的 主 体 部 分 提 供 的 有 关 内 容 类 型

的 信 息

GATEWAY_INTERFACE 服 务 器 支 持 的 CGI 规 格 的 修 订 版 。 当 前 的 版

本 为 CGI/1.1

HTTP_ACCEPT 特 殊 情 形 的 HTTP 头 。 Accept 的 值 : 连 结 的

域 , 通 过 “ , ” 隔 开 。 例 如 , 如 果 下 面 的 几行 代 码 是 HTTP 头 的 一 部 分 : accept:*/*;q=0.1

accept:text/html accept:image/jpeg

那 么 HTTP_ACCEPT 变 量 将 具 有 以 下 值 :

*/*;q=0.1,text/html,image/jpeg

PATH_INFO 附 加 的 路 径 信 息 , 与 客 户 给 定 的 相 同 。 这 个构 成 了 URL 中 在 脚 本 名 之 后 , 而 在 查 询 字 符串 ( 如 果 有 ) 之 前 的 部 分

PATH_TRANSLATED 这 是 PATH_INFO 的 值 , 但 是 还 把 一 些 虚 拟 路

径 名 扩 展 到 了 目 录 信 息 中 。QUERY_STRING 在 引 用 该 脚 本 的 URL 中 ? 后 面 的 信 息REMOTE_ADDR 客 户 的 IP 地址

REMOTE_HOST 客 户 的 主 机 名 字

REMOTE_USER 这 里 包 括 了 客 户 提 供 , 经 服 务 器 鉴 定 的 用 户

REQUEST_METHOD HTTP 的 请 求 方 法

SCRIPT_NAME 要 指 向 的 脚 本 程 序 的 名 字

SERVER_NAME 服 务 器 的 主 机 名 ( 或 IP 地 址 ) , 与 在 引 用 自

己 的 URL 中 出 现 的 一 样

SERVER_PORT 接 收 到 请 求 的 TCP/IP 端 口

SERVER_PROTOCOL 与 请 求 相 关 的 信 息 获 取 协 议 的 名 字 和 版 本 。

通 常 是 HTTP/1.0

SERVER_SOFTWARE CGI 程 序 运 行 的 Web 服 务 器 的 名 字 和 版 本

lpvBuffer

指 向 缓 冲 区 的 指 针 , 该 缓 冲 区 用 于 接 收 请 求 的 信 息 。

LpdwSize

指 向 一 个 D W O R D 值 的 指 针 , 该 值 指 明 了 缓 冲 区 可 以 容 纳 的 字 节 数 。 如果 成 功 地 结 束 , DWORD 中 包 含 了 传 送 到 缓 冲 区 内 的 字 节 数 目 ( 包 括 结束符 null) 。

W riteClient

从 指 定 的 缓 冲 区 向 客 户 发 送 信 息 。 W riteClient 具 有 如 下 参 数 :

  • ConnID HTTP 服 务 器 分 配 的 唯 一 的 连 接 数 。

  • Buffer 指 向 要 写 入 数 据 的 缓 冲 区 的 指 针 。

  • lpdwBytes 指 向 要 写 入 的 数 据 的 指 针 。

  • dwReserved 为 将 来 的 用 途 保 留 。

ReadClient

将 Web 客 户 的 HTTP 请 求 中 的 信 息 读 入 调 用 者 提 供 的 缓 冲 区 。ReadClient

具 有 如 下 参 数 :

  • ConnID HTTP 服 务 器 分 配 的 唯 一 的 连 接 数 。

  • lpvBuffer 指 向 接 收 要 求 的 信 息 的 缓 冲 区 的 指 针 。

  • lpdwSize 指 向 DWORD 值 的 指 针 , 该 值 指 明 缓 冲 区 能 够 获

    得 的 字 节数。 * lpdwSize 中 包 含 了 实 际 传 送 到 缓 冲 区 的 字 节 数 。

ServerSupportFunction

向 ISA 提 供 一 些 通 用 目 的 函 数 , 例 如 与 HTTP 服 务 器 实 现 相 关 的 函 数 。

ServerSupportFunction 具 有 如 下 参 数 :

  • hConn 连 接 句 柄 。

  • dwHSERRequest HTTP 服 务 器 扩 展 值 。 可 能 的 取 值 和 相 关 参

    数 的 列表 参 见 ChttpServerContext::ServerSupportFunction 。

  • lpvBuffer 与 HSE_REQ_SEND_RESPONSE_HEADER 一 起 使 用 的 时候

    , 它 指 向 一 个 以 null 结 尾 的 字 符 串 ( 例 如 , “ 401 Acess Denied ”) 。如 果 这 个 缓 冲 区 为 空 , 这 个 函 数 将 发 出 缺 省 的 响 应 “ 200 OK ” 。 与HSE_REQ_DONE_WITH_SESSION 一 起 使 用 的 时 候 , 它 指 向 一 个DWORD 值 , 指 明 了 请 求 的 状 态 代 码 。

  • lpdwSize 与 HSE_REQ_SEND_RESPONSE_HEADER 一 起 使 用 的 时候

    , 它 指 向 ldwDataType 缓 冲 区 的 大 小 。

  • lpdwDataType 以 nll 为 结 尾 的 字 符 串 , 指 向 将 与 头 一 起

    发 送 的 可 选的 头 或 数 据 。 如 果 为 NULL , 这 个 头 将 以 一 组 “ \r\n ” 结 束 。

注 释

服 务 器 用 后 缀 .EXE 和 .BAT 将 文 件 标 识 为 CG I( 通 用 网 关 接 口 ) 可 执 行 程 序 。另 外 , 服 务 器 能 用 DLL 后 缀 将 文 件 标 识 为 要 执 行 的 脚 本 。

当 服 务 器 载 入 DLL 时 ,它 在 入 口 点 ChttpServer::GetExtensionVersion 调 用 DLL , 以 获 得 HTTP_FILTER_REVISION 的 版 本 号 , 以 及 服 务 器 管 理 者 的 简 短 文 本 描述 。 对 于 每 个 客 户 请 求 , 都 要 调 用 ChttpServer::GetExtensionVersion 入 口 点 。

扩 展 将 接 收 共 同 需 要 的 信 息 , 如 查 询 字 符 串 , 路 径 信 息 , 方 法 名 和 转 换 路 径 。

请 参 阅

ChttpServerContext::ReadClient, ChttpServer::GetExtensionVersion, ChttpServer::HttpExtensionProc

FILETIME 结 构

FILETIME 结 构 具 有 如 下 形 式 :

typedef struct _FILETIME {

DWORD dwLowDateTime; /* low 32 bits */ DWORD dwHighDateTime; /* high 32 bits */

} FILETIME, *PFILETIME, *LPFILETIME;

FILETIME 结 构 是 一 个 64 位 值 , 代 表 了 自 1601 年 以 来 经 过 的 100 纳 秒 的 个 数 。

成 员

dwLowDateTime

指 定 了 文 件 时 间 的 低 32 位 值 。

DwHighDateTime

指 定 了 文 件 时 间 的 高 32 位 值 。

请 参 阅 Ctime::Ctime

HSE_VERSION_INFO 结 构

HSE_VERSION_INFO 结 构 具 有 如 下 形 式 :

typedef struct _HSE_VERSION_INFO { DWORD dwExtensionVersion;

CHAR lpszExtensionDesc[HSE_MAX_EXT_DLL_NAME_LEN];

} HSE_VERSION_INFO, *LPHSE_VERSION_INFO;

这 个 结 构 是 由 ChttpServer::GetExtensionVersion 成 员 函 数 的 pVer 参 数 所 指 向的 。 它 提 供 了 ISA 的 版 本 号 以 及 ISA 的 文 本 描 述 。

成 员

dwExtensionVersion

ISA 的 版 本 号 。

LpszExtensionDesc

ISA 的 文 本 描 述 。 缺 省 的 实 现 提 供 了 文 本 的 位 置 , 应 当 重 定 义

ChttpServer::GetExtensi- onVersion 函 数 以 提 供 你 自 己 的 描 述 。

请 参 阅 ChttpServer::GetExtensionVersion

HTTP_FILTER_CONTEXT 结构

HTTP_FILTER_CONTEXT 结 构 具 有 如 下 形 式 :

typedef struct _HTTP_FILTER_CONTEXT

{

DWORD cbSize;

//IN

DWORD Revision;

//IN

PVOID ServerContext;

//IN

DWORD ulReserved;

//IN

BOOL fIsSecurePort;

//IN

PVOID pFilterContext;

BOOL (WINAPI * GetServerVariable) struct _HTTP_FILTER_CONTEXT * pfc,

//IN/OUT

LPSTR lpszVariableName,

LPVOID lpvBuffer, LPDWORD lpdwSize

);

BOOL (WINAPI * AddResponseHeaders) struct _HTTP_FILTER_CONTEXT * pfc, LPSTR lpszHeaders,

DWORD dwReserved

);

BOOL (WINAPI * WriteClient)

struct _HTTP_FILTER_CONTEXT * pfc, LPVOID Buffer,

LPDWORD lpdwBytes, DWORD dwReserved

);

VOID * ( W INAPI * AllocMem)

struct _HTTP_FILTER_CONTEXT * pfc, DWORD cbSize,

DWORD dwReserved

);

BOOL (WINAPI * ServerSupportFunction) struct _HTTP_FILTER_CONTEXT * pfc, enum SF_REQ_TYPE sfReq,

PVOID pData,

DWORD ul1,

DWORD ul2

);

} HTTP_FILTER_CONTEXT, *PHTTP_FILTER_CONTEXT;

上 面 的 注 释 IN 或 IN/OUT 指 明 成 员 是 仅 用 于 发 送 到 过 滤 器 的 消 息 ( IN ) 还 是

用 于 发 送 到 过 滤 器 和 从 过 滤 器 发 出 的 消 息 ( OUT )。

成 员

cbSize

以 字 节 数 计 的 结 构 大 小 。

Revision

结 构 的 修 正 级 别 , 小 于 或 等 于 HTTP_FILTER_REVISION 的 版 本 。

ServerContext

为 服 务 器 的 使 用 而 保 留 。

U lReserved

为 服 务 器 的 使 用 而 保 留 。

FIsSecurePort

如 果 为 TRUE 表 明 这 一 事 件 通 过 一 个 安 全 端 口 发 生 。

PFilterContext

过 滤 器 使 用 的 指 针 , 指 向 环 境 信 息 , 过 滤 器 将 之 与 请 求 相 关 联 。 在SF_NOTIFY_END _OF_NET_SESSION 通 知 中 可 以 安 全 地 释 放 与 请 求 相关 的 内 存 。

GetServerVariable

函 数 的 指 针 , 此 函 数 用 于 获 取 服 务 器 和 连 接 的 信 息 。 有 关 细 节 参 见

ChttpServerCon- text::GetServerVariable 。 GetServerVariable 具 有 以 下 参数:

  • pfc 指 向 传 递 到 ChttpFilter::HttpFilterProc 的 过 滤 器 环 境

    的 指 针 。

  • lpszVariableName 要 获 取 的 服 务 器 变 量 。

  • lpvBuffer 用 于 存 储 变 量 值 的 缓 冲 区 。

  • lpdwSize 缓 冲 区 lpvBuffer 的 大 小 。

AddResponseHeaders

函 数 的 指 针 , 此 函 数 在 HTTP 响 应 上 加 上 头 。 有 关 细 节 参 见ChttpServerContext::Server- SupportFunction 中 对 于HSE_REQ_SEND_RESPONSE_HEADER 的 描 述 。 AddRespon- seHeaders 具 有 以 下 参 数 :

  • pfc 指 向 传 送 给 ChttpFilter::HttpFilterProc 过 滤 器 环 境 的

    指 针 。

  • lpszHeaders 包 含 要 加 的 头 的 字 符 串 指 针 。

  • dwReserved 留 作 将 来 使 用 。 必 须 为 0 。

W riteClient

函 数 的 指 针 , 此 函 数 将 原 始 数 据 发 回 客 户 。 有 关 细 节 参 见

ChttpFilterContext::Write- Clien t。 W riteClient 具 有 以 下 参 数 :

  • pfc 传 送 给 ChttpFilter::HttpFilterProc 的 指 针 。

  • Buffer 包 含 发 送 给 客 户 的 数 据 的 缓 冲 区 。

  • lpdwBytes Buffer 指 向 的 缓 冲 区 大 小 。

  • dwReserved 留 作 将 来 使 用 。

A lloc M em

指 向 用 来 分 配 内 存 的 函 数 的 指 针 。 当 请 求 结 束 时 , 这 个 函 数 分 配 的 内 存将 被 自 动 释 放 。 A lloc M em 具 有 以 下 参 数 :

  • pfc 传 递 给 ChttpFilter::HttpFilterProc 的 指 针 。

  • cbSize 要 分 配 的 缓 冲 区 的 大 小 。

  • dwReserved 留 作 将 来 使 用 。

ServerSupportFunction

指 向 用 来 扩 展 ISAPI 过 滤 器 API 的 指 针 。 下 面 列 出 的 参 数 与 使 用 的 ISA

有 关 :

  • pfc 指 向 用 来 扩 展 ISAPI 过 滤 器 API 的 函 数 的 指 针 。

  • sfReq 服 务 器 函 数 通 知 。 可 能 值 如 下 :

SF_REQ_SEND_RESPONSE_HEADER 发 送 一 个 完 整 的 HTTP 服务 器 响 应 头 , 包 括 状 态 , 服 务 器 版 本 , 消 息 时 间 和 M IM E 版 本 。 服 务器 扩 展 会 在 信 息 的 结 尾 添 加 其 它 信 息 , 比 如 内 容 类 型 , 内 容 长 度 等 等 , 最 后 是 额 外 的 ’\r\n ’。

SF_REQ_ADD_HEADERS_ON_DENIAL 如 果 服 务 器 忽 略 HTTP 请 求 , 在 服 务 器 错 误 响 应 加 上 特 定 的 头 。 这 允 许 一 个 授 权 的 过 滤 器 不过 滤 任 何 请 求 而 广 播 它 的 服 务 。 通 常 这 个 头 是 遵 照 自 定 义 鉴 定 模 式 的

PData

W W W 鉴 定 头 , 但 是 对 头 指 定 的 内 容 并 不 作 任 何 限 制 。

SF_REQ_SET_NEXT_READ_SIZE 仅 被 原 始 数 据 过 滤 器 使 用 , 返回 SF_STATUS_ READ_NEX T 。

字 符 串 指 针 。 与 ISA 有 关 。 对 sfReg 的 每 个 值 , 相 应 的 pData 值 参 见 注释 部 分 的 表 格 。

U l1, ul2

与 ISA 有 关 。 对 sfReg 的 每 个 值 , 相 应 的 值 参 见 注 释 部 分 的 表 格 。

注 释

下 面 是 与 ServerSupportFunction 参 数 对 应 的 可 能 值 :

sfReq

pData

ul1, ul2

SF_REQ_SEND_RESPONSE_

以 零 结

的 字

串 ,

以 零 结

HEADER

指 向 可

的 状

字 符

串 , 指

串 (

401

加 到 头

AccessDenied ” ) ,

的 可 选 数 据

对 于 缺 省 的 响 应 “ 200

OK ” 为 NULL

为 NULL ,

以 空 行 结 束

SF_REQ_ADD_HEADERS_ ON_DENIAL

SF_REQ_SET_NEXT_READ_ SIZE

请 参 阅

以 零 结 尾 的 字 符 串 , 指 向 一 个 或 多 个以 ’\r\n ’ 结 尾 的 头 行

续表

下 一 次 要 读 的 字节 数

ChttpFilter::HttpFilterProc, ChttpFilter::OnLog, ChttpServerContext, ChttpServerContext::GetServerVariable,ChttpServerContext::ServerSupportFunction, ChttpServerContext::WriteClient

HTTP_FILTER_LOG 结 构

The HTTP_FILTER_LOG 结 构 具 有 如 下 形 式 :

typedef struct _HTTP_FILTER_LOG

{

const CHAR *

pszClientHostName;

//IN/OUT

const CHAR *

pszClientUserName;

//IN/OUT

const CHAR *

pszServerName;

//IN/OUT

const CHAR *

pszOperation;

//IN/OUT

const CHAR *

pszTarget;

//IN/OUT

const CHAR *

pszParameters;

//IN/OUT

DWORD

dwHttpStatus;

//IN/OUT

DWORD

dwWin32Status;

//IN/OUT

} HTTP_FILTER_LOG, *PHTTP_FILTER_LOG;

ChttpFilter::HttpFilterProc 中 的 pvNotification 指 向 这 个 结 构 ,此 时 NotificationType 应 该 是 SF_NOTIFY_LOG , 指 明 服 务 器 将 把 信 息 记 入 日 志 文 件 。 字 符 串 不 能 改变 , 但 是 可 以 替 换 指 针 。 如 果 改 变 了 字 符 串 指 针 , 它 们 所 指 向 的 内 存 必 须 保 持有 效 , 直 到 产 生 下 一 次 通 知 。

上 面 注 释 中 的 IN/OUT 指 明 该 成 员 应 用 于 输 入 ( IN ) 或 输 出 ( O U T ) 到 过 滤 器的 消 息 。

成 员

pszClientHostName

客 户 的 主 机 名 。

PszClientUserName

客 户 的 用 户 名 。

PszServerName

客 户 所 连 接 的 服 务 器 名 。

PszOperation

HTTP 命 令 。

PszTarget

HTTP 命 令 的 目 标 。

PszParameters

传 递 给 HTTP 命 令 的 参 数 。

DwHttpStatus

HTTP 的 返 回 状 态 。

DwWin32Status

W in32 错 误 代 码 。

请 参 阅 ChttpFilter::HttpFilterProc, ChttpFilter::OnLog

HTTP_FILTER_PREPROC_HEADERS 结 构

The HTTP_FILTER_PREPROC_HEADERS 结 构 具 有 如 下 形 式 :

typedef struct _HTTP_FILTER_PREPROC_HEADERS

{

BOOL (WINAPI * GetHeader)

struct _HTTP_FILTER_CONTEXT * pfc,

LPSTR lpszName, LPVOID lpvBuffer, LPDWORD lpdwSize

);

BOOL (WINAPI * SetHeader)

struct _HTTP_FILTER_CONTEXT * pfc, LPSTR lpszName,

LPSTR lpszValue

);

BOOL (WINAPI * AddHeader)

struct _HTTP_FILTER_CONTEXT * pfc, LPSTR lpszName,

LPSTR lpszValue

);

DWORD dwReserved;

} HTTP_FILTER_PREPROC_HEADERS,

*PHTTP_FILTER_PREPROC_HEADERS;

ChttpFilter::HttpFilterProc 中 的 pvNotification 指 向 这 个 结 构 ,此 时 NotificationType

应 该 是 SF_NOTIFY_PREPROC_HEADERS , 指 明 服 务 器 将 要 处 理 客 户 头 。

成 员

GetHeader

函 数 指 针 , 该 函 数 接 收 指 定 的 头 值 。 头 名 中 必 须 包 括 冒 号 ( “ : ” ) 。可 以 用 特 定 的 值 , 如 “ method ” , “ url ” 和 “ version ” 来 接 收 请 求 行 的单 独 部 分 。 GetHeader 具 有 以 下 参 数 :

  • pfc 从 传 递 给 ChttpFilter::HttpFilterProc 的 过 滤 器 环 境 指

    针 中 获 得 的过 滤 器 环 境 。

  • lpszName 要 获 得 的 头 的 名 字 。

  • lpvBuffer 指 向 大 小 为 lpdwSize 的 缓 冲 区 的 指 针 , 其 中

    保 存 了 头 的 值 。

  • lpdwSize lpvBuffer 指 向 的 缓 冲 区 的 大 小 。

SetHeader

函 数 指 针 , 该 函 数 用 于 改 变 或 删 除 头 的 值 。 SetHeader 具 有 以 下 参 数 :

  • pfc 从 传 递 给 ChttpFilter::HttpFilterProc 的 过 滤 器 环 境 指

    针 中 获 得 的过 滤 器 环 境 。

  • lpszName 要 改 变 或 删 除 的 头 的 名 字 。

  • lpszValue 字 符 串 指 针 , 要 把 头 改 变 为 该 指 针 所 指 向 的

    字 符 串 ; 或 者是 指 向 “ \0 ” 的 指 针 , 表 明 要 删 除 头 。

AddHeader

函 数 指 针 , 该 函 数 用 于 加 入 头 。 AddHeader 具 有 如 下 参 数 :

  • pfc 从 传 递 给 ChttpFilter::HttpFilterProc 的 过 滤 器 环 境 指

    针 中 获 得 的过 滤 器 环 境 。

  • lpszName 要 改 变 或 删 除 的 头 的 名 字 。

  • lpszValue 字 符 串 指 针 , 要 把 头 改 变 为 该 指 针 所 指 向 的

    字 符 串 ; 或 者是 指 向 “ \0 ” 的 指 针 , 表 明 要 删 除 头 。

请 参 阅 ChttpFilter::HttpFilterProc, ChttpFilter::OnPreprocHeaders

HTTP_FILTER_RAW_DATA 结 构

The HTTP_FILTER_RAW_DATA 结 构 具 有 如 下 形 式 :

typedef struct _HTTP_FILTER_RAW_DATA

{

PVOID

DWORD

pvInData;

cbInData;

//IN

//IN

DWORD

cbInBuffer;

//IN

DWORD

dwReserved;

//IN

} HTTP_FILTER_RAW_DATA, *PHTTP_FILTER_RAW_DATA;

这 个 结 构 被 传 递 给 ChttpFilter::HttpFilterProc 的

SF_NOTIFY_READ_RAW_DATA 和 SF_NOTIFY_SEND_RAW_DATA 通 知 类

型 。

成 员

pvInData

指 向 数 据 缓 冲 区 的 指 针 ( 输 入 或 输 出 ) 。

CbInData

pvInData 所 指 向 的 缓 冲 区 中 数 据 的 数 量 。

CbInBuffer

pvInData 所 指 向 的 缓 冲 区 的 大 小 。

DwReserved

为 将 来 的 使 用 保 留 。

请 参 阅 ChttpFilter::HttpFilterProc, ChttpFilter::OnReadRawData, ChttpFilter::OnSendRawData

HTTP_FILTER_URL_MAP 结 构

The HTTP_FILTER_URL_MAP 结 构 具 有 如 下 形 式 :

typedef struct _HTTP_FILTER_URL_MAP

{

CHAR * pszPhysicalPath; //IN/OUT DWORD cbPathBuff; //IN

} HTTP_FILTER_URL_MAP, *PHTTP_FILTER_URL_MAP;

ChttpFilter::HttpFilterProc 中 的 pvNotification 指 向 这 个 结 构 ,此 时 NotificationType 应 该 是 SF_NOTIFY_URL_MA P ,指 明 服 务 器 将 把 指 定 了 URL 映 射 到 实 际 路 径 。过 滤 器 可 以 随 时 修 改 实 际 路 径 。

上 面 注 释 中 的 IN 或 IN/OUT 指 明 该 成 员 是 仅 适 用 于 发 往 过 滤 器 的 消 息 ( IN ) 还 是 对 发 往 过 滤 器 和 过 滤 器 发 出 的 消 息 都 适 用 ( IN/OUT )。

成 员

pszURL

将 要 被 映 射 到 实 际 路 径 的 URL 。

PszPhysicalPath

保 存 实 际 路 径 的 缓 冲 区 指 针 。

CbPathBuff

pszPhysicalPath 所 指 向 的 缓 冲 区 的 大 小 。

请 参 阅 ChttpFilter::HttpFilterProc, ChttpFilter::OnUrl M ap

HTTP_FILTER_VERSION 结 构

HTTP_FILTER_VERSION 结 构 具 有 如 下 形 式 :

typedef struct _HTTP_FILTER_VERSION

{

DWORD dwServerFilterVersion; //IN

DWORD dwFilterVersion; //OUT

CHAR lpszFilterDesc[SF_MAX_FILTER_DESC_LEN+1]; //OUT DWORD dwFlags; //OUT

} HTTP_FILTER_VERSION, *PHTTP_FILTER_VERSION;

这 个 结 构 被 服 务 器 传 递 给 应 用 程 序 的 ChttpFilter::HttpFilterProc 入 口 点 , 用 来 把任 何 环 境 信 息 与 HTTP 请 求 关 联 起 来 。

上 面 注 释 中 的 IN 或 O U T 指 明 该 成 员 是 适 用 于 发 往 过 滤 器 的 消 息 ( IN ) 还 是 过滤 器 发 出 的 消 息 ( O U T ) 。

成 员

dwServerFilterVersion

过 滤 使 用 的 头 的 版 本 。 当 前 头 文 件 的 版 本 为 HTTP_FILTER_REVISION 。

DwFilterVersion

HTTP_FILTER_REVISION 的 版 本 。

LpszFilterDesc

保 存 简 短 的 字 符 串 的 位 置 , 该 字 符 串 描 述 了 ISAPI 过 滤 器 应 用 程 序 。

DwFlags

SF_NOTIFY_* 标 志 的 组 合 , 用 来 指 明 这 个 应 用 程 序 需 要 什 么 事 件 , 过滤 器 以 何 种 优 先 级 载 入 。有 效 标 志 的 列 表 参 见 ChttpFilter::GetFilterVersion 和 ChttpFilter:: H ttpFilterProc 。

请 参 阅 ChttpFilter::HttpFilterProc, ChttpFilter::GetFilterVersion

LINGER 结构

LINGER 结 构 具 有 如 下 形 式 :

struct linger {

u_short l_onoff; // option on/off

u_short l_linger; // linger time

};

LINGER 结 构 被 用 来 操 作 CasyncSocket::GetSockOpt 的 SO_LINGER 和

SO_DONTLINGER 选 项 。

注 释

设 置 了 SO_DONTLINGER 选 项 可 以 防 止 成 员 函 数 阻 塞 。 在 等 待 发 送 还 未 发 送

出 去 的 数 据 时 可 以 关 闭 。设 置 这 个 选 项 等 价 于 把 SO_LINGER 的 l_onoff 设为 0 。

请 参 阅 CasyncSocket::GetSockOpt, CasyncSocket::SetSockOpt

LOGBRUSH 结 构

LOGBRUSH 结 构 具 有 如 下 形 式 :

typedef struct tag LOGBRUSH { /* lb */ UINT lbStyle;

COLORREF lbColor;

LONG lbHatch;

} LOGBRUSH;

LOGBRUSH 结 构 定 义 了 物 理 刷 子 的 风 格 、 颜 色 和 模 板 。 它 被 W indows 的

CreateBrushIndirect 和 ExtCreatePen 函 数 使 用 。

成 员

lbStyle

指 定 了 刷 子 的 风 格 。 LbStyle 成 员 必 须 是 以 下 风 格 之 一 :

  • BS_DIBPATTERN 一 个 代 模 板 的 刷 子 , 用 设 备 无 关 位 图 ( DIB ) 来定 义 。 如 果 lbStyle 为 BS_DIBPATTERN , 那 么 lbHatch 成 员 中 包 含 了压缩 DIB 的 句 柄 。

    • BS_DIBPATTERNPT 一 个 代 模 板 的 刷 子 , 用 设 备 无 关 位 图

      ( DIB ) 来 定 义 。 如 果 lbStyle 为 BS_DIBPATTERN PT , 那 么 lbHatch 成 员 中 包含 了 指 向 压 缩 DIB 的 指 针 。

    • BS_HATCHED 阴 影 刷 子 。

    • BS_HOLLOW 空 刷 子 。

    • BS_NULL 与 BS_HOLLOW 相 同 。

    • BS_PATTERN 用 内 存 位 图 定 义 的 模 板 刷 子 。

    • BS_SOLID 实 心 刷 子 。

LbColor

指 定 了 画 出 刷 子 的 颜 色 。 如 果 lbStyle 为 BS_HOLLOW 或 BS_PATTERN 风 格 , 将 会 忽 略 lbColor 。 如 果 lbStyle 为 BS_DIBPATTERN 或BS_DIBPATTERNBT , 则 lbColor 的 低 位 字 指 定 了 BITMAPINFO 结 构 的bmiColors 成 员 是 包 含 了 准 确 的 红 、 绿 、 蓝 ( RGB ) 值 还 是 包 含 当 前 使 用的 逻 辑 调 色 板 的 索 引 。 LbColor 成 员 可 以 取 如 下 值 之 一 :

  • D IB_PAL_COLORS 颜 色 表 中 包 含 了 当 前 使 用 的 逻 辑 调 色 板

    中 的 16

位 索 引 数 组 。

  • D IB_RGB_COLORS 颜 色 表 中 包 含 了 准 确 的 RGB 值 。

LbHatch

指 定 了 阴 影 的 风 格 。其 含 义 依 赖 于 lbStyle 所 定 义 的 刷 子 风 格 。如 果 lbStyle 为 BS_DIBPATTERN , 则 lbHatch 成 员 中 包 含 了 包 装 的 DIB 的 句 柄 。 如果 lbStyle 为 BS_DIBPATTERNPT , 则 lbHatch 成 员 中 包 含 了 包 装 的 DIB

的 指 针 。 如 果 lbStyle 为 BS_HATCHED , 则 lbHatch 成 员 指 定 了 创 建 阴影 时 使 用 的 线 条 的 方 向 。 它 可 以 取 下 面 列 出 的 值 :

  • HS_BDIAGONAL 45 度 向 上 , 从 左 到 右 的 阴 影 。

  • HS_CROSS 纵 横 交 叉 的 阴 影 。

  • HS_DIAGCROSS 45 度 交 叉 的 阴 影 。

  • HS_FDIAGONAL 45 度 向 下 , 从 左 到 右 的 阴 影 。

  • HS_HORIZONTAL 水 平 阴 影 。

  • HS_VERTICAL 垂 直 阴 影 。

如 果 lbStyle 是 BS_PATTERN ,则 lbHatch 为 定 义 了 模 板 的 位 图 句 柄 。如 果 lbStyle

为 BS_SOLID 或 BS_HOLLOW ,则 lbHatch 被 忽 略 。

注 释

lbColor 控 制 着 阴 影 刷 子 的 前 景 色 , CDC::SetBkMode 和 CDC::SetBkColorbm 函数 控 制 着 背 景 色 。

请 参 阅 CDC::GetCharABCWidths

LOGPEN 结 构

LOGPEN 结 构 具 有 如 下 形 式 :

typedef struct tagLOGPEN { /* lgpn */

UINT lopnStyle;

POINT lopnWidth; COLORREF lopnColor;

} LOGPEN;

LOGPEN 结 构 定 义 了 画 笔 的 风 格 、 宽 度 和 颜 色 , 画 笔 是 用 于 画 出 线 条 和 边 界 的绘 图 对 象 。 Cpen::CreatePenIndirect 函 数 使 用 LOGPEN 结 构 。

成 员

lopnStyle

指 定 了 画 笔 的 风 格 。 这 个 成 员 可 以 是 以 下 值 之 一 :

  • PS_SOLID

创 建 实 心 的 画 笔 。

  • PS_DASH

创 建 短 线 画 笔 。 ( 仅 当 画 笔 宽 度 为

1

时 有 效 )

  • PS_DOT 创 建 点 线 画 笔 。 ( 仅 当 画 笔 宽 度 为 1 时 有 效 )

  • PS_DASHDOT 创 建 点 划 线 画 笔 。 ( 仅 当 画 笔 宽 度 为 1 时 有

    效 )

  • PS_DASHDOTDOT 创 建 短 线 与 两 个 点 相 间 的 画 笔 。 ( 仅 当 画

    笔 宽度为 1 时 有 效 )

  • PS_NULL 创 建 空 画 笔 。

  • PS_INSIDEFRAME 创 建 一 种 画 笔 , 在 封 闭 图 形 的 框 架 内 部

    画 线 , 这 个 图 形 是 由 那 些 指 定 边 界 矩 形 的 GDI 输 出 函 数 ( 例 如 Ellipse , Rectangle , RoundRect , Pie 以 及 C hord 成 员 函 数 ) 生 成 的 。 当 对 那 些

不 指 定 边 界 矩 形 的 GDI 输 出 函 数 ( 例 如 LineTo 成 员 函 数 ) 应 用 这 个风 格 时 , 画 笔 的 绘 图 区 域 并 不 被 限 制 在 框 架 内 部 。

如 果 画 笔 具 有 PS_INSIDEFRAME 风 格 , 并 且 其 颜 色 与 逻 辑 颜 色 表 中 的颜 色 不 匹 配 , 那 么 将 用 抖 动 色 画 出 该 画 笔 。 不 能 用 PS_SOLID 风 格 来 创建 具 有 抖 动 色 的 画 笔 。 当 画 笔 宽 度 小 于 或 等 于 1 时 , PS_INSIDEFRAME 风 格 与 PS_SOLID 风 格 相 同 。

当对 Ellipse , Rectangle 和 RoundRect 以 外 的 函 数 产 生 的 GDI 对 象 使 用PS_INSIDEFRAME 风 格 时 , 画 出 的 线 条 可 能 不 会 完 全 位 于 指 定 的 框 架内 部 。

LopnWidth

指 定 画 笔 的 宽 度 , 使 用 逻 辑 单 位 。 如 果 lopnWidth 成 员 为 0 , 则 不 论 当 前的 映 射 模 式 是 什 么 , 画 笔 在 光 栅 设 备 上 的 宽 度 都 是 一 个 象 素 。

LopnColor

指 定 画 笔 的 颜 色 。

注 释

lopnWidth 成 员 中 POINT 结 构 的 y 值 没 有 被 使 用 。

请 参 阅 Cpen::CreatePenIndirect

MEASUREITEMSTRUCT 结 构

MEASUREITEMSTRUCT 数 据 结 构 具 有 如 下 形 式 :

typedef struct tagMEASUREITEMSTRUCT { UINT CtlType;

UINT CtlID;

UINT itemID;

UINT itemWidth;

UINT itemHeight; DWORD itemData

} MEASUREITEMSTRUCT;

MEASUREITEMSTURCT 结 构 通 知 W indows 自 画 控 件 或 菜 单 项 的 尺 度 。 这 使得 W indows 能 够 正 确 处 理 控 件 的 用 户 交 互 。 如 果 没 有 正 确 地 填 充MEASUREITEMSTRUCT 结 构 中 的 成 员 , 可 能 会 导 致 控 件 的 不 正 确 的 操 作 。

成 员

CtlType

包 含 了 控 件 的 类 型 。 控 件 类 型 的 取 值 如 下 :

  • ODT_COMBOBOX 自 画 组 合 框 。

  • ODT_LISTBOX 自 画 列 表 框 。

CtlID ItemID

  • ODT_MENU 自 画 菜 单 。

包 含 了 组 合 框 、 列 表 框 或 按 钮 的 控 制 ID 。 菜 单 不 使 用 这 个 成 员 。

包 括 了 菜 单 的 菜 单 项 ID 或 是 可 变 高 度 的 组 合 框 或 列 表 框 中 列 表 框 项 的

ID 。 这 个 成 员 不 对 固 定 高 度 的 组 合 框 、 列 表 框 和 按 钮 使 用 。

ItemWidth

指 定 了 菜 单 项 的 宽 度 。 自 画 菜 单 项 的 所 有 者 必 须 在 它 从 消 息 返 回 之 前 填充 这 个 成 员 。

ItemHeight

指 定 了 列 表 框 或 菜 单 中 一 项 的 高 度 。 在 从 消 息 返 回 之 前 , 自 画 组 合 框 、列 表 框 或 菜 单 项 的 所 有 者 必 须 填 充 这 个 成 员 。 列 表 框 项 的 最 大 高 度 为255 。

ItemData

对 于 组 合 框 或 列 表 框 , 这 个 成 员 中 包 含 了 下 列 函 数 传 递 给 列 表 框 的 值 :

  • CcomboBox::AddString

  • CcomboBox::InsertString

  • ClistBox::AddString

  • ClistBox::InsertString

对 于 菜 单 , 这 个 成 员 中 包 含 了 下 列 函 数 传 递 给 菜 单 的 值 :

  • Cmenu::AppendMenu

  • Cmenu::InsertMenu

  • Cmenu::ModifyMenu

请 参 阅 CWnd::OnMeasureItem

M INMAXINFO 结 构

M INMAXINFO 结 构 具 有 如 下 形 式 :

typedef struct tagMINMAXINFO { POINT ptReserved;

POINT ptMaxSize; POINT ptMaxPosition; POINT ptMinTrackSize; POINT ptMaxTrackSize;

} MINMAXINFO;

M INMAXINFO 结 构 中 包 含 了 有 关 窗 口 的 最 大 化 大 小 和 位 置 以 及 最 大 、 最 小 跟踪 大 小 的 信 息 。

成 员

ptReserved

为 内 部 使 用 保 留 。

PtMaxSize

指 定 了 窗 口 的 最 大 化 宽 度 ( point.x ) 和 最 大 化 高 度 ( point.y ) 。

pt M axPosition

指 定 了 最 大 化 窗 口 的 左 边 位 置 ( point.x ) 和 顶 部 位 置 ( point.y ) 。

pt M inTrackSize

指 定 了 窗 口 的 最 小 跟 踪 宽 度 ( point.x ) 和 最 小 跟 踪 高 度 ( point.y )。

pt M axTrackSize

指 定 了 窗 口 的 最 大 跟 踪 宽 度 ( point.x ) 和 最 大 跟 踪 高 度 ( point.y )。

请 参 阅 CWnd::OnGetMinMaxInfo

MSG 结 构

MSG 结 构 具 有 如 下 形 式 :

typedef struct tagMSG { // msg HWND hwnd;

UINT message;

WPARAM wParam; LPARAM lParam; DWORD time;

POINT pt;

} MSG;

MSG 结 构 中 包 含 了 线 程 的 消 息 队 列 中 的 消 息 信 息 。

成 员

hwnd

标 识 了 接 收 的 消 息 的 窗 口 过 程 所 属 的 窗 口 的 句 柄 。

M essage

指 定 了 消 息 号 。

WParam

指 定 了 消 息 的 附 加 信 息 。 具 体 的 含 义 与 message 成 员 的 值 有 关 。

LParam

指 定 了 消 息 的 附 加 信 息 。 具 体 的 含 义 与 message 成 员 的 值 有 关 。

Time

Pt

指 定 了 发 出 消 息 的 时 间 。

NCCALCSIZE_PARAMS 结 构

NCCALCSIZE_PARAMS 结 构 具 有 如 下 形 式 :

typedef struct tagNCCALCSIZE_PARAMS { RECT rgrc[3]; PWINDOWPOS lppos;

} NCCALCSIZE_PARAMS;

NCCALCSIZE_PARAMS 结 构 中 包 含 了 一 些 信 息 , 应 用 程 序 在 处 理WM_NCCALCSIZE 消 息 的 时 候 用 它 来 计 算 窗 口 客 户 区 的 大 小 , 位 置 和 有 效 内容 。

成 员

rgrc

指 定 了 一 个 矩 形 数 组 。 第 一 个 矩 形 包 含 了 窗 口 被 移 动 或 改 变 大 小 之 后 的新 坐 标 。 第 二 个 矩 形 包 含 了 窗 口 被 移 动 或 改 变 大 小 之 前 的 坐 标 。 第 三 个矩 形 包 含 了 在 被 移 动 或 改 变 大 小 之 前 窗 口 客 户 区 的 坐 标 。 如 果 该 窗 口 是一 个 子 窗 口 , 那 么 这 些 坐 标 是 相 对 于 父 窗 口 的 客 户 区 的 。 如 果 该 窗 口 是

Lppos

指 向 W INDOWPOS 结 构 , 其 中 包 含 了 引 起 窗 口 移 动 或 改 变 大 小 的 操 作所 指 定 的 大 小 或 位 置 值 。

请 参 阅 CWnd::OnNcCalcSize

PAINTSTRUCT 结 构

PAINTSTRUCT 结 构 具 有 如 下 形 式 :

typedef struct tagPAINTSTRUCT { HDC hdc;

BOOL fErase;

RECT rcPaint;

BOOL fRestore;

BOOL fIncUpdate;

BYTE rgbReserved[16];

} PAINTSTRUCT;

PAINTSTRUCT 结 构 中 包 含 了 被 用 于 画 出 窗 口 客 户 区 的 信 息 。

成 员

hdc FErase

标 识 了 用 于 绘 图 的 显 示 环 境 。

指 定 是 否 要 重 画 背 景 。 如 果 应 用 程 序 需 要 重 画 背 景 , 则 其 为 非 零 值 。 如果 创 建 W indows 的 窗 口 类 时 没 有 使 用 背 景 刷 子 ( 参 见 W in32 SDK 文 档中 WNDCLASS 结 构 的 hbrBackground 成 员 的 描 述 ) , 那 么 应 由 应 用 程序 负 责 画 出 背 景 。

RcPaint

指 定 了 要 重 画 的 矩 形 区 域 的 左 上 角 和 右 下 角 。

FRestore

保 留 成 员 。 它 被 W indows 内 部 使 用 。

FIncUpdate

保 留 成 员 。 它 被 W indows 内 部 使 用 。

RgbReserved[16]

保 留 成 员 。 W indows 内 部 使 用 的 保 留 内 存 块 。

请 参 阅 CpaintDC::m_ps

POINT 结构

POINT 数 据 结 构 具 有 如 下 形 式 :

typedef struct tagPOINT {

LONG x;

LONG y;

} POINT;

POINT 结 构 定 义 一 个 点 的 x 和 y 坐 标 。

成 员

x

指 定 了 点 的 x 坐 标 。

Y

指 定 了 点 的 y 坐 标 。

请 参 阅 Cpoint

RECT 结 构

RECT 数 据 结 构 具 有 如 下 形 式 :

typedef struct tagRECT { LONG left;

LONG top;

LONG right;

LONG bottom;

} RECT;

RECT 结 构 定 义 了 矩 形 的 左 上 角 坐 标 和 右 下 角 坐 标 。

成 员

left Top Right

指 定 了 矩 形 的 左 上 角 的 x 坐 标 。指 定 了 矩 形 的 左 上 角 的 y 坐 标 。

指 定 了 矩 形 的 右 下 角 的 x 坐 标 。

Bottom

指 定 了 矩 形 的 右 下 角 的 y 坐 标 。

请 参 阅 Crect

RGNDATA 结 构 具 有 如 下 形 式 :

typedef struct _RGNDATA { /* rgnd */ RGNDATAHEADER rdh;

char Buffer[1];

} RGNDATA;

RGNDATA 结 构 中 包 含 了 一 个 头 和 一 个 矩 形 数 组 , 组 成 了 一 个 区 域 。 这 些 矩 形从 左 到 右 、 从 上 到 下 排 列 , 没 有 重 叠 。

成 员

rdh

Buffer

指 定 了 一 个 RGNDATAHEADER 结 构 。 ( 有 关 这 个 结 构 的 更 多 信 息 参 见W in32 SDK 文 档 ) 这 个 结 构 的 成 员 指 定 了 区 域 的 类 型 ( 是 矩 形 还 是 不 规则 多 边 形 ) , 组 成 区 域 的 矩 形 数 目 , 包 含 矩 形 结 构 的 缓 冲 区 大 小 , 等 等 。

指 定 了 任 意 大 小 的 缓 冲 区 , 其 中 包 含 了 组 成 区 域 的 RECT 结 构 。

请 参 阅 CRgn::CreateFromData, CRgn::GetRegionData

SIZE 结 构 具 有 如 下 形 式 :

typedef struct tagSIZE { int cx;

int cy;

} SIZE;

SIZE 结 构 指 定 了 矩 形 的 宽 度 和 高 度 。

成 员

cx

指 定 了 函 数 返 回 时 的 x 范 围 。

Cy

指 定 了 函 数 返 回 时 的 y 范 围 。

注 释

这 个 结 构 中 保 存 的 矩 形 尺 度 信 息 可 以 作 为 视 口 的 范 围 , 窗 口 范 围 , 文 本 范 围 , 位 图 尺 度 或 者 是 一 些 扩 展 函 数 使 用 的 aspect-ratio 过 滤 器 。

请 参 阅 Csize

SOCKADDR 结 构

SOCKADDR 结 构 具 有 如 下 形 式 :

struct sockaddr {

unsigned short sa_family; char sa_data[14];

};

SOCKADDR 结 构 被 用 来 保 存 参 与 W indows Sockets 通 讯 的 机 器 的 Internet 协 议

( IP ) 地 址 。

成 员

sa_family

Socket 地 址 家 族 。

Sa_data

所 有 不 同 的 socket 地 址 结 构 的 最 大 大 小 。

M icrosoft TCP/IP Sockets 开 发 包 只 支 持 Internet 地 址 域 。 为 了 填 充 地 址 的 每 个部 分 ,应 当 使 用 SOCKADDR_IN 结 构 ,它 是 这 个 地 址 格 式 所 特 有 的 。SOCKADDR 和 SOCKADDR_IN 数 据 结 构 的 大 小 相 同 。 你 可 以 在 这 两 种 数 据 结 构 之 间 转 换 。更 多 的 信 息 参 见 W in32 SDK 文 档 中 的 “ W indows Sockets 编 程 考 虑 ” 。

请 参 阅 SOCKADDR_IN, CasyncSocket::Create, Csocket::Create

SOCKADDR_IN 结 构

SOCKADDR_IN 结 构 具 有 如 下 形 式 :

struct sockaddr_in{

short sin_family; unsigned short sin_port; struct in_addr sin_addr; char sin_zero[8];

};

在 Internet 地 址 家 族 中 , SOCKADDR_IN 结 构 被 W indows Sockets 用 来 指 定 要连 接 的 本 地 或 远 程 结 束 点 地 址 。 这 是 一 种 与 Internet 地 址 家 族 有 关 的SOCKADDR 结 构 的 形 式 , 并 且 它 可 以 被 强 制 转 换 为 SOCKADDR 。

sin_family

地 址 家 族 ( 必 须 是 AF_INET ) 。

Sin_port

IP 端 口 。

Sin_addr

IP 地 址 。

Sin_zero

用 于 将 该 结 构 对 齐 到 与 SOCKADDR 相 同 的 大 小 。

注 释

这 个 结 构 中 的 IP 地 址 部 分 属 于 IN_ADDR 类 型 。 在 W indows Sockets 头 文 件

W INSOCK.H 中 , IN_ADDR 是 按 照 下 面 的 方 式 定 义 的 :

struct in_addr { union {

struct{

unsigned char s_b1,

s_b2, s_b3,

s_b4;

} S_un_b; struct {

unsigned short s_w1,

s_w2;

} S_un;

};

} S_un_w;

unsigned long S_addr;

更 多 的 信 息 参 见 W in32 SDK 文 档 中 的 “ W indows Sockets 编 程 考 虑 ” 。

请 参 阅 SOCKADDR

SYSTEMTIME 结 构

SYSTEMTIME 结 构 具 有 如 下 形 式 :

typedef struct _SYSTEMTIME { WORD wYear;

WORD wMonth; WORD wDayOfWeek; WORD wDay;

WORD wHour;

WORD wMinute;

WORD wSecond;

WORD wMilliseconds;

} SYSTEMTIME;

SYSTEMTIME 结 构 代 表 了 日 期 和 时 间 , 对 于 月 、 日 、 年 、 周 、 时 、 分 、 秒 和毫 秒 分 别 使 用 了 不 同 的 成 员 。

成 员

wYear

当 前 的 年 。

WMonth

当 前 的 月 , 一 月 为 1 。

WDayOfWeek

当 前 的 周 日 , 星 期 日 为 0 , 星 期 一 为 1 , 依 次 类 推 。

WDay

当 前 的 日 期 。

WHour

当 前 的 小 时 。

W M inute

当 前 的 分 钟 数 。

WSecond

当 前 的 秒 数 。

W M illiseconds

当 前 的 毫 秒 数 。

请 参 阅 Ctime::Ctime

TEXTMETRIC 结 构

TEXTMETRIC 结 构 具 有 如 下 形 式 :

typedef struct tagTEXTMETRIC { /* tm */ int tmHeight;

int tmAscent;

int tmDescent;

int tmInternalLeading; int tmExternalLeading; int tmAveCharWidth;

int tmMaxCharWidth;

int tmWeight; BYTE tmItalic; BYTE tmUnderlined; BYTE tmStruckOut; BYTE tmFirstChar; BYTE tmLastChar;

BYTE tmDefaultChar; BYTE tmBreakChar; BYTE tmPitchAndFamily; BYTE tmCharSet;

int tmOverhang;

int tmDigitizedAspectX; int tmDigitizedAspectY;

} TEXTMETRIC;

TEXTMETRIC 结 构 中 包 含 了 有 关 物 理 字 体 的 基 本 信 息 。 所 有 的 大 小 都 是 用 逻辑 单 位 给 出 的 , 这 意 味 着 , 它 们 依 赖 于 显 示 环 境 的 当 前 映 射 模 式 。

有 关 这 个 结 构 的 更 完 整 的 信 息 参 见 W in32 SDK 文 档 中 的 TEXTMETRIC 。

请 参 阅 CDC::GetTextMetrics, TEXTMETRIC

W INDOWPLACEMENT 结 构

W INDOWPLACEMENT 数 据 结 构 具 有 如 下 形 式 :

typedef struct tagWINDOWPLACEMENT { /* wndpl */ UINT length;

UINT flags;

UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition;

} WINDOWPLACEMENT;

W INDOWPLACEMENT 结 构 中 包 含 了 有 关 窗 口 在 屏 幕 上 位 置 的 信 息 。

成 员

length Flags

指 定 了 结 构 的 长 度 , 以 字 节 为 单 位 。

指 定 了 控 制 最 小 化 窗 口 的 位 置 的 标 志 以 及 复 原 窗 口 的 方 法 。 这 个 成 员 可以 是 下 面 列 出 的 标 志 之 一 , 或 都 是 :

  • WPF_SETMINPOSITION 表 明 可 以 指 定 最 小 化 窗 口 的 x 和 y 坐 标

    。如 果 是 在 pt M inPosition 成 员 中 设 置 坐 标 , 则 必 须 指 定 这 个 标 志 。

  • WPF_RESTORETOMAXIMIZED 表 明 复 原 后 的 窗 口 将 会 被 最 大化 ,

    而 不 管 它 在 最 小 化 之 前 是 否 是 最 大 化 的 。 这 个 设 置 仅 在 下 一 次 复原 窗 口 时 有 效 。 它 不 改 变 缺 省 的 复 原 操 作 。 这 个 标 志 仅 当 showCmd 成员 中 指 定 了 SW_SHOWMINIMIZED 时 才 有 效 。

ShowCmd

指 定 了 窗 口 的 当 前 显 示 状 态 。 这 个 成 员 可 以 是 下 列 值 之 一 :

  • SW_HIDE 隐 藏 窗 口 , 使 其 它 窗 口 变 为 激 活 的 。

  • SW_MINIMIZE 最 小 化 指 定 的 窗 口 , 并 激 活 系 统 列 表 中 的

    顶 层 窗口。

  • SW_RESTORE 激 活 并 显 示 窗 口 。 如 果 窗 口 是 最 小 化 或 最 大

    化 的 ,

W indows 将 把 它 恢 复 到 原 来 的 大 小 和 位 置 ( 与 SW_SHOWNORMAL

相 同 ) 。

  • SW_SHOW 激 活 窗 口 并 按 照 当 前 的 位 置 和 大 小 显 示 窗 口 。

  • SW_SHOWMAXIMIZED 激 活 窗 口 并 将 其 显 示 为 最 大 化 的 。

  • SW_SHOWMINIMIZED 激 活 窗 口 并 将 其 显 示 为 图 标 。

  • SW_SHOWMINNOACTIVE 将 窗 口 显 示 为 图 标 。 当 前 激 活 的 窗 口

    仍保 持 激 活 状 态 。

  • SW_SHOWNA 按 当 前 状 态 显 示 窗 口 。 当 前 激 活 的 窗 口 仍 保

    持 激 活状 态 。

  • SW_SHOWNOACTIVATE 按 最 近 的 位 置 和 大 小 显 示 窗 口 。 当 前

    激活 的 窗 口 仍 保 持 激 活 状 态 。

  • SW_SHOWNORMAL 激 活 并 显 示 窗 口 。 如 果 窗 口 是 最 小 化 或 最

    大化 的 , W indows 将 它 恢 复 到 原 来 的 大 小 和 位 置 (与 SW_RESTORE 相同 ) 。

PtMinPosition

指 定 了 窗 口 被 最 小 化 时 左 上 角 的 位 置 。

PtMaxPosition

指 定 了 窗 口 被 最 大 化 时 左 上 角 的 位 置 。

RcNormalPosition

指 定 了 窗 口 处 于 正 常 状 态 ( 复 原 ) 时 的 坐 标 。

请 参 阅 CWnd::SetWindowPlacement

W INDOWPOS 结 构

W INDOWPOS 数 据 结 构 具 有 如 下 形 式 :

typedef struct tagWINDOWPOS { /* wp */ HWND hwnd;

HWND hwndInsertAfter;

int x;

int y;

int cx;

int cy;

UINT flags;

} WINDOWPOS;

W INDOWPOS 结 构 包 含 了 有 关 窗 口 的 大 小 和 位 置 的 信 息 。

成 员

hwnd

标 识 窗 口 。

HwndInsertAfter

标 识 了 一 个 窗 口 , 本 窗 口 将 被 放 在 这 个 窗 口 的 后 面 。

X

指 定 了 窗 口 的 左 边 界 的 位 置 。

Y

指 定 了 窗 口 的 右 边 界 的 位 置 。

Cx

指 定 了 窗 口 的 宽 度 , 以 象 素 为 单 位 。

Cy Flags

指 定 了 窗 口 的 高 度 , 以 象 素 为 单 位 。

指 定 了 窗 口 位 置 的 选 项 。 这 个 成 员 可 以 是 下 列 值 之 一 :

  • SWP_DRAWFRAME 画 出 窗 口 的 边 框 ( 在 窗 口 类 的 描 述 中 定 义

    ) 。窗 口 接 收 到 一 个 WM_NCCALCSIZE 消 息 。

  • SWP_FRAMECHANGED 向 窗 口 发 送 一 个 W M _NCCALCSIZE 消息 , 即

    使 没 有 改 变 窗 口 的 大 小 。 如 果 没 有 指 定 这 个 标 志 , 仅 当 窗 口 的大 小 发 生 变 化 时 才 发 送 W M _NCCALCSIZE 消 息 。

  • SWP_HIDEWINDOW 隐 藏 窗 口 。

  • SWP_NOACTIVATE 不 激 活 窗 口 。

  • SWP_NOCOPYBITS 废 弃 客 户 区 的 全 部 内 容 。 如 果 没 有 指 定

    这 个 标志 , 将 会 保 存 客 户 区 的 有 效 内 容 并 在 窗 口 被 改 变 大 小 或 重 定 位 以 后 回送 到 客 户 区 。

  • SWP_NOMOVE 保 留 当 前 位 置 ( 忽 略 x 和 y 成 员 ) 。

  • SWP_NOOWNERZORDER 不 改 变 所 有 者 窗 口 在 Z 轴 上 的 顺 序 。

  • SWP_NOSIZE 保 留 当 前 大 小 ( 忽 略 cx 和 cy 成 员 ) 。

  • SWP_NOREDRAW 不 重 画 改 变 的 内 容 。

  • SWP_NOREPOSITION 与 SWP_NOOWNERZORDER 相 同 。

  • SWP_NOSENDCHANGING 防 止 窗 口 接 收

WM_WINDOWPOSCHANGING 消 息 。

  • SWP_NOZORDER 保 留 当 前 顺 序 ( 忽 略 hwndInsertAfter 成 员 )

  • SWP_SHOWWINDOW 显 示 窗 口 。

请 参 阅 CWnd::OnWindowPosChanging

WSADATA 结 构

WSADATA 结 构 具 有 如 下 形 式 :

struct WSAData {

WORD wVersion;

WORD wHighVersion;

char szDescription[WSADESCRIPTION_LEN+1];

char szSystemStatus[WSASYSSTATUS_LEN+1]; unsigned short iM axSockets;

unsigned short iM axUdpDg;

char FAR * lpVendorInfo;

};

WSADATA 结 构 被 用 来 保 存 全 局 函 数 AfxSocketInit 返 回 的 W indows Sockets 初始 化 信 息 。

成 员

wVersion

W indows Sockets DLL 期 望 调 用 者 使 用 的 W indows Sockets 规 范 的 版 本 。

W H ighVersion

这 个 DLL 能 够 支 持 的 W indows Sockets 规 范 的 最 高 版 本 。 通 常 它 与

wVersion 相 同 。

SzDescription

以 null 结 尾 的 ASCII 字 符 串 ,W indows Sockets DLL 将 对 W indows Sockets

实 现 的 描 述 拷 贝 到 这 个 字 符 串 中 , 包 括 制 造 商 标 识 。 文 本 ( 最 多 可 以 有

256 个 字 符 ) 可 以 包 含 任 何 字 符 , 但 是 要 注 意 不 能 包 含 控 制 字 符 和 格 式字 符 , 应 用 程 序 对 其 最 可 能 的 使 用 方 式 是 把 它 ( 可 能 被 截 断 ) 显 示 在 在状 态 信 息 中 。

SzSystemStatus

以 null 结 尾 的 ASCII 字 符 串 , W indows Sockets DLL 把 有 关 的 状 态 或 配置 信 息 拷 贝 到 该 字 符 串 中 。 W indows Sockets DLL 应 当 仅 在 这 些 信 息 对用 户 或 支 持 人 员 有 用 时 才 使 用 它 们 , 它 不 应 被 作 为 szDescription 域 的 扩展。

IM axSockets

单 个 进 出 能 够 打 开 的 socket 的 最 大 数 目 。 W indows Sockets 的 实 现 能 提 供

一 个 全 局 的 socket 池 , 可 以 为 任 何 进 程 分 配 ; 或 者 它 也 可 以 为 socket 分配 属 于 进 程 的 资 源 。 这 个 数 字 能 够 很 好 地 反 映 W indows Sockets DLL 或网 络 软 件 的 配 置 方 式 。 应 用 程 序 的 编 写 者 可 以 通 过 这 个 数 字 来 粗 略 地 指明 W indows Sockets 的 实 现 方 式 对 应 用 程 序 是 否 有 用 。 例 如 , X W indows 服 务 器 在 第 一 次 启 动 的 时 候 可 能 会 检 查 iMaxSockets 的 值 : 如 果 这 个 值小于 8 , 应 用 程 序 将 显 示 一 条 错 误 信 息 , 指 示 用 户 重 新 配 置 网 络 软 件 ( 这是 一 种 可 能 要 使 用 szSystemStatus 文 本 的 场 合 ) 。 显 然 无 法 保 证 某 个 应用 程 序 能 够 真 正 分 配 iM axSockets 个 socket , 因 为 可 能 有 其 它 W indows Sockets 应 用 程 序 正 在 使 用 。

IM axUdpDg

W indows Sockets 应 用 程 序 能 够 发 送 或 接 收 的 最 大 的 用 户 数 据 包 协 议

( UDP ) 的 数 据 包 大 小 , 以 字 节 为 单 位 。 如 果 实 现 方 式 没 有 限 制 , 那 么iMaxUdpDg 为 零 。 在 Berkeley sockets 的 许 多 实 现 中 , 对 于 UDP 数 据 包有 个 固 有 的 限 制( 在 必 要 时 被 分 解 ),大 小 为 8192 字 节 。W indows Sockets 的 实 现 可 以 对 碎 片 重 组 缓 冲 区 的 分 配 作 出 限 制 。 对 于 适 合 的 W indows Sockets 实 现 , iMaxUdpDg 的 最 小 值 为 512 。 注 意 不 管 iMaxUdpDg 的 值是 什 么 , 都 不 推 荐 你 发 回 一 个 比 网 络 的 最 大 传 送 单 元 ( MTU ) 还 大 的 广播 数 据 包 。 ( W indows Sockets API 没 有 提 供 发 现 MTU 的 机 制 , 但 是 它不 会 小 于 512 个 字 节 )

lpVendorInfo

指 向 销 售 商 的 数 据 结 构 的 指 针 。这 个 结 构 的 定 义( 如 果 有 )超 出 了 W indows

Sockets 规 范 的 范 围 。更 多 的 信 息“ 参 见 W in32 SDK 文 档 ”中 的“ W indows Sockets 编 程 考 虑 ” 。

注意 在 MFC 中 , WSADATA 结 构 是 由 AfxSock et Init 函 数 返 回 的 , 你 在InitInstance 函 数 中 调 用 这 个 函 数 。 如 果 你 需 要 在 以 后 使 用 这 些 信 息 , 你 可 以 获 得 这 个 结 构 并 将 它 保 存 在 程 序 中 。

请 参 阅 AfxSocketInit

XFORM 结构

XFORM 结 构 具 有 如 下 形 式 :

typedef struct tagXFORM { /* xfrm */ FLOAT eM11;

FLOAT eM12;

FLOAT eM21;

FLOAT eM22;

FLOAT eDx;

FLOAT eDy;

} XFORM;

注 释

XFORM 结 构 指 定 了 从 世 界 空 间 到 页 面 空 间 的 转 换 。 EDx 和 eDy 成 员 分 别 指 定了 水 平 和 垂 直 转 换 成 分 。 下 面 的 表 格 显 示 了 其 它 成 员 是 如 何 被 使 用 的 , 依 赖 于其 它 操 作 :

操作

eM11

eM12

eM21

eM22

旋转

旋 转 角 度 的 余 弦

旋 转 角 度 的 正 弦

旋 转 角

旋 转

正 弦

的 余 弦

缩放

水 平 缩 放 成 分

垂 直 缩

成分

修剪

水 平 比 例 常 量

垂 直 比 例 常 量

反射

水 平 反 射 成 分

垂 直 反

成分

请 参 阅 CRgn::CreateFromData

MFC 使 用 的 风 格

在 多 数 情 况 下 , 下 面 的 主 题 中 描 述 的 风 格 是 在 d wstyle 参 数 中 指 定 的 。 进 一 步的 信 息 参 考 每 种 风 格 的 “ 请 参 阅 ” 部 分 中 列 出 的 成 员 函 数 。

按 钮 风 格

  • BS_AUTOCHECKBOX 与 复 选 框 相 同 , 但 是 当 用 户 选 择 复 选 框

    时 , 检 查标 记 出 现 在 复 选 框 中 , 而 当 用 户 再 一 次 选 择 复 选 框 时 , 检 查 标 记 就 消 失 。

  • BS_AUTORADIOBUTTON 与 单 项 按 钮 相 同 , 但 是 当 用 户 选 择 它

    的 时候 , 这 个 按 钮 自 动 加 亮 显 示 自 己 并 去 掉 同 组 中 相 同 风 格 的 其 它 单 项 按 钮 的选 择 状 态 。

  • BS_AUTO3STATE 与 三 态 复 选 框 相 同 , 但 是 当 用 户 选 择 该 框

    时 它 会 改变 自 己 的 状 态 。

  • BS_CHECKBOX 创 建 一 个 小 方 块 , 在 它 的 右 边 显 示 文 本 (

    除 非 这 个 风

格 与 BS_LEFTTEXT 风 格 一 起 使 用 ) 。

  • BS_DEFPUSHBUTTON 创 建 一 个 具 有 深 黑 边 界 的 按 钮 。 用 户 可

    以 按 下

ENTER 键 以 选 择 这 个 按 钮 。 这 个 风 格 使 用 户 可 以 快 速 地 选 择 最 相 似 的 选 项

( 缺 省 选 项 ) 。

  • BS_GROUPBOX 创 建 一 个 矩 形 区 域 , 其 中 的 按 钮 是 成 组 的

    。 与 这 种 风格 相 关 的 任 何 文 本 将 显 示 在 矩 形 的 左 上 角 。

  • BS_LEFTTEXT 当 与 单 项 按 钮 风 格 或 复 选 框 风 格 一 起 使 用

    时 , 文 本 出 现

在 单 项 按 钮 或 复 选 框 的 左 边 。

  • BS_OWNERDRAW 创 建 一 个 自 画 按 钮 。 当 按 钮 的 视 觉 状 态 发

    生 改 变 时 , 框 架 调 用 DrawItem 成 员 函 数 。 当 使 用 CBitmapB utton 类 的 时 候 , 必 须 设 置这 个 风 格 。

  • BS_PUSHBUTTON 创 建 一 个 按 钮 , 当 用 户 选 择 该 按 钮 时 向 所

    有 者 窗 口发 送 一 个 W M _COMMAND 消 息 。

  • BS_RADIOBUTTON 创 建 一 个 小 圆 形 区 域 , 在 它 的 右 边 显 示

    文 本( 除 非这 个 风 格 与 BS_LEFTTEXT 风 格 一 起 使 用 ) 。 单 项 按 钮 通 常 成 组 使 用 但 是只 能 独 占 选 择 。

  • BS_3STATE 与 复 选 框 类 似 , 但 是 这 个 框 不 仅 可 以 被 选 中

    , 还 可 以 被 变灰 。 变 灰 状 态 通 常 用 来 标 识 该 复 选 框 已 经 被 禁 止 。

请 参 阅 CButton::Create

组 合 框 风 格

  • CBS_AUTOHSCROLL 当 用 户 在 行 尾 输 入 一 个 字 符 时 , 自 动 把

    编 辑 控 件中 的 文 本 向 右 滚 动 。 如 果 没 有 设 置 该 风 格 , 则 输 入 的 文 本 信 息 只 能 多 到 填满 矩 形 边 框 。

  • CBS_DROPDOWN 与 CBS_SIMPLE 类 似 , 但 是 除 非 用 户 选 择 了 编

    辑 控件 旁 边 的 图 标 , 否 则 不 会 显 示 列 表 框 。

  • CBS_DROPDOWNLIST 与 CBS_DROPDOWN 类 似 , 但 是 编 辑 控 件 被

    静态 文 本 项 代 替 , 其 中 显 示 了 列 表 框 中 的 当 前 选 择 。

  • CBS_HASSTRINGS 包 含 了 字 符 串 组 成 的 项 的 自 画 组 合 框 。

    组 合 框 维 护着 字 符 串 的 内 存 和 指 针 , 因 此 应 用 程 序 可 以 使 用 GetText 成 员 函 数 从 某 个项 获 得 文 本 。

  • CBS_OEMCONVERT 在 组 合 框 的 编 辑 控 件 内 输 入 的 文 本 将 从

    ANSI 字符 集 转 换 到 OEM 字 符 集 , 然 后 再 回 到 ANS I 。 当 应 用 程 序 调 用 W indows 的 AnsiToOem 函 数 把 组 合 框 中 的 一 个 ANSI 字 符 串 转 换 到 OEM 字 符 时 , 这 能 确 保 进 行 了 合 适 的 字 符 转 换 。 这 个 风 格 对 那 些 包 含 了 文 件 名 的 组 合 框最 有 用 , 仅 适 用 于 用 CBS_SIMPLE 或 CBS_DROPDOWN 风 格 创 建 的 组 合框 。

  • CBS_OWNERDRAWFIXED 列 表 框 的 拥 有 者 负 责 画 出 其 内 容 , 列

    表 框中 所 有 项 的 高 度 是 一 样 的 。

  • CBS_OWNERDRAWVARIABLE 列 表 框 的 拥 有 者 负 责 画 出 其 内 容 ,

    列表 框 中 各 项 的 高 度 是 不 一 致 的 。

  • CBS_SIMPLE 任 何 时 候 都 显 示 列 表 框 。 列 表 框 的 当 前 选 择

    显 示 在 编 辑 控

件 中 。

  • CBS_SORT 自 动 排 列 输 入 到 列 表 框 的 字 符 串 。

  • CBS_DISABLENOSCROLL 当 列 表 框 没 有 足 够 的 项 以 供 滚 动 时 ,

    列 表 框将 显 示 一 个 被 禁 止 的 垂 直 滚 动 条 。 如 果 没 有 这 种 风 格 , 当 列 表 框 不 包 含 足够 的 项 时 , 这 个 滚 动 条 将 会 被 隐 藏 。

  • CBS_NOINTEGRALHEIGHT 指 明 组 合 框 的 大 小 就 是 应 用 程 序 在

    创 建 该组 合 框 时 指 定 的 大 小 。 通 常 , W indows 会 调 整 一 些 组 合 框 的 大 小 , 使 得 组合 框 不 需 要 显 示 部 分 项 。

请 参 阅 CComboBox::Create

编 辑 风 格

  • ES_AUTOHSCROLL 当 用 户 在 行 尾 输 入 字 符 时 ,自 动 将 文 本 向

    右 滚 动 10

个 字 符 。 当 用 户 按 下 ENTER 键 时 , 控 件 将 文 本 滚 动 回 起 始 位 置 。

  • ES_AUTOVSCROLL 当 用 户 在 最 后 一 行 输 入 ENTER 时 , 自 动 将

    文 本 向上 滚 动 一 页 。

  • ES_CENTER 在 单 行 或 多 行 编 辑 控 件 中 将 文 本 对 中 。

  • ES_LEFT 在 单 行 或 多 行 编 辑 控 件 中 将 文 本 靠 左 对 齐 。

  • ES_LOWERCASE 将 用 户 输 入 到 编 辑 控 件 的 字 符 全 部 转 换 为

    小 写 。

  • ES_MULTILINE 指 明 了 一 个 多 行 编 辑 控 件 ( 缺 省 的 是 单 行

    的 ) 。 如 果指 定 了 ES_AUTOVSCROLL 风 格 , 编 辑 控 件 将 显 示 尽 可 能 多 的 文 本 , 并 且当 用 户 按 下 ENTER 键 时 会 自 动 地 垂 直 滚 动 文 本 。 如 果 没 有 指 定ES _ AUTOVSCROLL 风 格 , 则 编 辑 控 件 将 显 示 尽 可 能 多 的 行 , 如 果 在 按 下ENTER 键 却 没 有 更 多 的 行 要 显 示 的 话 , 就 发 出 蜂 鸣 声 。 如 果 指 定 了ES_AUTOHSCROLL 风 格 , 当 光 标 到 达 控 件 的 右 边 时 , 多 行 编 辑 控 件 会 自动 地 水 平 滚 动 文 本 。 如 果 要 开 始 一 个 新 行 , 用 户 必 须 按 下 ENTER 键 。 如果 没 有 指 定 ES_AUTOHSCROLL 风 格 , 控 件 会 在 有 必 要 时 自 动 将 单 词 折 合到 下 一 行 的 开 始 。 如 果 按 下 ENTER 键 , 则 另 起 一 行 。 折 回 单 词 的 位 置 是由 窗 口 的 大 小 决 定 的 。 如 果 窗 口 的 大 小 发 生 改 变 , 折 回 单 词 的 位 置 也 会 反生 改 变 , 将 会 重 新 显 示 文 本 。 多 行 编 辑 控 件 可 以 有 滚 动 条 。 具 有 滚 动 条 的编 辑 控 件 会 处 理 它 自 己 的 滚 动 条 消 息 。 没 有 滚 动 条 的 编 辑 控 件 按 照 前 面 描

述 的 方 式 进 行 滚 动 , 并 且 处 理 父 窗 口 发 出 的 任 何 滚 动 消 息 。

  • ES_NOHIDESEL 通 常 , 当 编 辑 控 件 失 去 输 入 焦 点 时 , 它 会

    隐 藏 选 择 区域 , 当 它 获 得 输 入 焦 点 时 , 它 会 反 转 显 示 选 择 区 域 。 如 果 指 定 了ES_NOHIDESEL 风 格 则 去 掉 了 这 个 缺 省 的 动 作 。

  • ES_OEMCONVERT 输 入 到 编 辑 控 件 的 文 本 将 被 从 ANSI 字 符 集

    转 换 到OEM 字 符 集 , 然 后 转 换 回 ANSI 字 符 集 。 这 使 得 在 应 用 程 序 调 用 W indows 的 AnsiToOem 函 数 以 把 编 辑 控 件 中 的 ANSI 字 符 串 转 换 为 OEM 字 符 时 , 能 够 进 行 正 确 的 字 符 转 换 。 这 个 风 格 对 包 含 文 件 名 的 编 辑 控 件 最 有 用 。

  • ES_PASSWORD 在 编 辑 控 件 中 输 入 字 符 时 , 将 所 有 的 字 符

    显 示 为 星 号

( * ) 。 应 用 程 序 可 以 通 过 SetPasswordChar 成 员 函 数 来 改 变 显 示 的 字 符 。

  • ES_RIGHT 在 单 行 或 多 行 编 辑 控 件 中 将 文 本 靠 右 对 齐 。

  • ES_UPPERCASE 在 编 辑 控 件 中 输 入 字 符 时 , 将 所 有 的 字 符

    转 换 为 大 写 。

  • ES_READONLY 禁 止 用 户 输 入 或 修 改 编 辑 控 件 中 的 文 本 。

  • ES_WANTRETURN 指 定 当 用 户 在 对 话 框 中 的 多 行 编 辑 控 件 中

    输 入 文 本时 , 如 果 按 下 了 ENTER 键 , 则 插 入 回 车 换 行 符 。 如 果 不 使 用 这 个 风 格 , 按 下 ENTER 键 的 效 果 与 按 下 对 话 框 的 缺 省 按 钮 相 同 。 这 个 风 格 对 单 行 编辑 控 件 不 起 作 用 。

请 参 阅 CEdit::Create

框 架 窗 口 风 格

  • FWS_ADDTOTITLE 指 定 了 要 附 加 到 框 架 窗 口 标 题 末 尾 的 信

    息 。 例 如 , “ M icrosoft Draw - Drawing in Document1 ” 。 你 可 以 指 定 显 示 在 AppWizard 的 Advanced Options 对 话 框 中 的 字 符 串 。 如 果 你 希 望 关 闭 这 个 选 项 , 重 载CWnd::PreCreateWindow 消 息 。

  • FWS_PREFIXTITLE 在 框 架 窗 口 的 标 题 中 , 在 应 用 程 序 的 名

    字 之 前 显 示文 档 的 名 字 。例 如 ,“ Document - WordPad ”。你 可 以 指 定 显 示 在 AppWizard 的 Advanced Options 对 话 框 中 的 字 符 串 。 如 果 你 希 望 关 闭 这 个 选 项 , 重 载CWnd::PreCreateWindow 消 息 。

  • FWS_SNAPTOBARS 控 制 框 架 窗 口 的 大 小 , 该 窗 口 围 绕 着 一

    个 控 制 条 , 这 个 控 制 条 是 一 个 浮 动 窗 口 , 而 不 是 固 定 在 框 架 窗 口 中 。 这 个 风 格 调 整 窗口 的 大 小 以 使 用 控 制 条 。

列 表 框 风 格

  • LBS_EXTENDEDSEL 用 户 可 以 通 过 鼠 标 和 SHIFT 键 或 者 其 它 特

    殊 键 组合 来 选 取 多 个 项 。

  • LBS_HASSTRINGS 指 定 自 画 列 表 框 中 包 含 的 项 是 由 字 符 串

    组 成 的 。 列表 框 维 护 着 字 符 串 的 内 存 和 指 针 , 应 用 程 序 可 以 使 用 GetText 成 员 函 数 来获 得 特 定 项 的 文 本 。

  • LBS_MULTICOLUMN 指 定 一 个 可 以 水 平 滚 动 的 多 列 列 表 框 。

SetColumnWidth 成 员 函 数 设 置 列 的 宽 度 。

  • LBS_MULTIPLESEL 当 用 户 单 击 或 双 击 字 符 串 时 , 切 换 字 符

    串 的 选 择状 态 。 可 以 选 择 任 意 数 目 的 字 符 串 。

  • LBS_NOINTEGRALHEIGHT 列 表 框 的 大 小 与 应 用 程 序 创 建 它 的

    时 候 指定 的 大 小 完 全 相 等 。 通 常 , W indows 会 调 整 列 表 框 的 大 小 , 是 列 表 框 不 会只 显 示 部 分 项 。

  • LBS_NOREDRAW 当 列 表 框 发 生 变 化 时 不 更 新 显 示 。 这 个 风

    格 可 以 通过 发 送 WM_SETREDRAW 消 息 在 任 何 时 间 改 变 。

  • LBS_NOTIFY 当 用 户 单 击 或 双 击 字 符 串 时 , 父 窗 口 接 收 到

    一 个 输 入 消息 。

  • LBS_OWNERDRAWFIXED 列 表 框 的 所 有 者 负 责 画 出 它 的 内 容 ,

    列 表 框中 的 各 项 是 等 高 的 。

  • LBS_OWNERDRAWVARIABLE 列 表 框 的 所 有 者 负 责 画 出 其 内 容 ,

    列表 框 中 的 各 项 的 高 度 不 相 同 。

  • LBS_SORT 列 表 框 中 的 字 符 串 是 按 照 字 母 表 顺 序 排 列 的

  • LBS_STANDARD 列 表 框 中 的 字 符 串 是 按 照 字 母 表 顺 序 排 序

    的 , 当 用 户单 击 或 双 击 字 符 串 时 , 父 窗 口 接 收 到 一 个 输 入 消 息 。 列 表 框 在 每 条 边 上 都有 边 界 。

  • LBS_USETABSTOPS 允 许 列 表 框 在 显 示 字 符 串 的 时 候 识 别 并

    扩 展 制 表字 符 。 缺 省 的 制 表 位 置 是 32 个 对 话 框 单 位 。 ( 对 话 框 单 位 是 水 平 或 垂 直 距

离 。 水 平 对 话 框 单 位 等 于 当 前 对 话 框 基 准 宽 度 单 位 的 四 分 之 一 。 对 话 框 基准 单 位 是 通 过 当 前 系 统 字 体 的 宽 度 和 高 度 来 计 算 的 。 W indows 的GetDialogBaseUnits 函 数 返 回 以 象 素 为 单 位 的 当 前 对 话 框 基 准 单 位 。 )

  • LBS_WANTKEYBOARDINPUT 不 论 什 么 时 候 , 只 要 用 户 在 列 表 框

    具 有输 入 焦 点 的 时 候 按 下 了 键 , 列 表 框 就 接 收 到 WM_VKEYTOITEM 或W M_CHARTOITEM 消 息 。 这 使 得 应 用 程 序 能 够 对 键 盘 输 入 进 行 特 别 处理 。

  • LBS_DISABLENOSCROLL 当 列 表 框 中 没 有 足 够 多 的 项 , 不 需 要

    滚 动时 , 就 显 示 一 个 被 禁 止 的 垂 直 滚 动 条 。 如 果 不 使 用 这 个 风 格 , 当 列 表 框 不包 含 足 够 多 的 项 时 , 它 就 隐 藏 滚 动 条 。

请 参 阅 CListBox::Create

消 息 框 风 格

消 息 框 类 型

  • MB_ABORTRETRYIGNORE 消 息 框 包 含 三 个 按 钮 : Abort , Retry 和

Ignore 。

  • MB_OK 消 息 框 包 含 一 个 按 钮 : O K 。

  • MB_OKCANCEL 消 息 框 包 含 两 个 按 钮 : O K 和 Cancel。

  • MB_RETRYCANCEL 消 息 框 包 含 两 个 按 钮 : Retry 和 Cancel。

  • MB_YESNO 消 息 框 包 含 两 个 按 钮 : Yes 和 No 。

  • MB_YESNOCANCEL 消 息 框 包 含 三 个 按 钮 : Yes , No 和 C ancel。

消 息 框 模 式

  • MB_APPLMODAL 用 户 在 当 前 窗 口 中 继 续 工 作 之 前 必 须 先 响

    应 消 息框 。 但 是 , 用 户 可 以 移 动 到 其 它 应 用 程 序 的 窗 口 中 并 在 那 些 窗 口 中 工 作 。如 果 没 有 指 定 MB_SYSTEMMODAL 和 MB_TASKMODA L , 则 缺 省 值 为MB_APPLMODA L 。

  • MB_SYSTEMMODAL 在 用 户 响 应 消 息 框 之 前 , 所 有 的 应 用 程

    序 都 被 挂起 。 系 统 模 式 消 息 框 被 用 来 向 用 户 通 知 严 重 的 、 潜 在 的 毁 灭 性 错 误 , 需 要立 即 注 意 , 小 心 对 待 。

  • MB_TASKMODAL 与 MB_APPLMODAL 类 似 , 但 是 在 微 软 基 础 类 应

    用程 序 中 没 有 用 处 。 这 个 标 志 是 为 那 些 没 有 窗 口 句 柄 的 调 用 应 用 程 序 或 库 保留 的 。

消 息 框 图 标

  • MB_ICONEXCLAMATION 在 消 息 框 中 显 示 感 叹 号 图 标 。

  • MB_ICONINFORMATION 在 消 息 框 中 显 示 一 个 圆 包 围 着 字 母 “

    i” 的 图标 。

  • MB_ICONQUESTION 在 消 息 框 中 显 示 问 号 图 标 。

  • MB_ICONSTOP 在 消 息 框 中 显 示 停 止 标 志 图 标 。

消 息 框 缺 省 按 钮

  • MB_DEFBUTTON1 第 一 个 按 钮 是 缺 省 按 钮 。 注 意 , 除 非 指 定

    了MB_DEFBUTTON2 或 MB_DEFBUTTON3 风 格 , 否 则 第 一 个 按 钮 总 是 缺省 按 钮 。

  • MB_DEFBUTTON2 第 二 个 按 钮 是 缺 省 按 钮 。

  • MB_DEFBUTTON3 第 三 个 按 钮 是 缺 省 按 钮 。

请 参 阅 AfxMessageBox

滚 动 条 风 格

  • SBS_BOTTOMALIGN 与 SBS_HORZ 风 格 一 起 使 用 。 滚 动 条 的 底 边

    与Create 成 员 函 数 中 指 定 的 矩 形 的 底 边 对 齐 。 滚 动 条 具 有 系 统 滚 动 条 的 缺 省高 度 。

  • SBS_HORZ 指 明 了 一 个 水 平 滚 动 条 。 如 果 既 没 有 指

    定SBS_BOTTOMALIGN 风 格 又 没 有 指 定 SBS_TOPALIGN 风 格 , 则 滚 动 条具 有 Create 成 员 函 数 中 指 定 的 高 度 , 宽 度 和 位 置 。

  • SBS_LEFTALIGN 与 SBS_VERT 风 格 一 起 使 用 。 滚 动 条 的 左 边

    与 Create

成 员 函 数 中 指 定 的 矩 形 的 左 边 对 齐 。 滚 动 条 具 有 系 统 滚 动 条 的 缺 省 宽 度 。

  • SBS_RIGHTALIGN 与 SBS_VERT 风 格 一 起 使 用 。滚 动 条 的 右 边

    与 Create

成 员 函 数 中 指 定 的 矩 形 的 右 边 对 齐 。 滚 动 条 具 有 系 统 滚 动 条 的 缺 省 宽 度 。

  • SBS_SIZEBOX 指 明 了 一 个 尺 寸 框 。 如

    果SBS_SIZEBOXBOTTOMRIGHTALIGN 风 格 和SBS_SIZEBOXTOPLEFTALIGN 风 格 都 没 有 指 定 , 尺 寸 框 具 有 Create 成 员函 数 中 指 定 的 高 度 , 宽 度 和 位 置 。

  • SBS_SIZEBOXBOTTOMRIGHTALIGN 与 SBS_SIZEBOX 风 格 一 起 使用 。 尺

    寸 框 的 右 下 角 与 Create 成 员 函 数 中 指 定 的 矩 形 的 右 下 角 对 齐 。 尺 寸框 具 有 系 统 尺 寸 框 的 缺 省 大 小 。

  • SBS_SIZEBOXTOPLEFTALIGN 与 SBS_SIZEBOX 风 格 一 起 使 用 。 尺

    寸框 的 左 上 角 与 Create 成 员 函 数 中 指 定 的 矩 形 的 左 上 角 对 齐 。 尺 寸 框 具 有 系统 尺 寸 框 的 缺 省 大 小 。

  • SBS_TOPALIGN 与 SBS_HORZ 风 格 一 起 使 用 。 滚 动 条 的 顶 边 与

    Create

成 员 函 数 中 指 定 的 矩 形 的 顶 边 对 齐 。 滚 动 条 具 有 系 统 滚 动 条 的 缺 省 高 度 。

  • SBS_VERT 指 明 了 一 个 垂 直 滚 动 条 。如 果 既 没 有 指 定

    SBS_RIGHTALIGN 风 格 也 没 有 指 定 SBS_LEFTALIGN 风 格 , 滚 动 条 具 有 Create 成 员 函 数 中 指定 的 高 度 , 宽 度 和 位 置 。

请 参 阅 CScrollBar::Create

静 态 文 本 风 格

  • SS_BLACKFRAME 指 定 了 一 个 带 边 框 的 方 框 , 用 与 窗 口 边 框

    相 同 的 颜色 画 出 。 缺 省 的 颜 色 是 黑 色 。

  • SS_BLACKRECT 指 定 一 个 矩 形 , 用 窗 口 边 框 的 颜 色 填 充 。

    缺 省 颜 色 是黑 色 。

  • SS_CENTER 指 定 一 个 简 单 的 矩 形 , 在 矩 形 的 中 央 显 示 给

    定 的 文 本 。 文本 将 在 显 示 之 前 格 式 化 。 超 出 行 尾 的 单 词 将 自 动 折 回 到 下 一 行 的 开 始 。

  • SS_GRAYFRAME 指 定 一 个 带 边 框 的 方 框 ,用 屏 幕 的 背 景 色(

    桌 面 颜 色 ) 画 出 。 缺 省 的 颜 色 是 灰 色 。

  • SS_GRAYRECT 指 定 一 个 矩 形 , 用 屏 幕 的 背 景 色 填 充 。 缺

    省 的 颜 色 是 灰色 。

  • SS_ICON 指 定 了 在 对 话 框 中 显 示 的 图 标 。 给 定 的 文 本 是

    资 源 文 件 中 定义 的 图 标 名 ( 不 是 文 件 名 ) 。 nWidthnHeight 参 数 被 忽 略 , 图 标 自 动 调整 自 己 的 大 小 。

  • SS_LEFT 指 定 一 个 简 单 的 矩 形 , 在 矩 形 内 显 示 左 对 齐 的

    给 定 文 本 。 文 本在 显 示 之 前 格 式 化 。 超 出 行 尾 的 单 词 将 自 动 折 回 到 下 一 行 的 开 始 。

  • SS_LEFTNOWORDWRAP 指 定 一 个 简 单 的 矩 形 , 在 矩 形 内 显 示

    左 对 齐的 给 定 文 本 。 制 表 符 被 扩 展 , 但 是 不 会 折 回 单 词 。 超 出 行 尾 的 单 词 被 裁 剪 。

  • SS_NOPREFIX 除 非 指 定 了 这 个 风 格 , 否 则 W indows 将 控 制

    文 本 中 所 有的 “ & ” 字 符 解 释 为 加 速 键 前 缀 。 在 这 种 情 况 下 , “ & ” 被 移 去 , 字 符 串

中 的 下 一 个 字 符 被 加 上 下 划 线 。 如 果 一 个 包 含 文 本 的 静 态 文 本 控 件 不 需 要这 个 特 性 , 可 能 需 要 加 入 SS_NOPREFIX 。 这 个 风 格 可 以 用 于 任 何 静 态 控件 。 你 可 以 用 位 或 操 作 符 把 SS_NOPREFIX 与 其 它 风 格 组 合 起 来 。 最 常 使用 这 个 风 格 的 情 况 是 , 可 能 要 在 对 话 框 的 静 态 控 件 中 显 示 带 有 “ & ” 字 符的 文 件 名 或 其 它 字 符 串 。

  • SS_RIGHT 指 定 一 个 简 单 的 矩 形 , 在 矩 形 内 显 示 右 对 齐

    的 给 定 文 本 。 文本 在 显 示 之 前 格 式 化 。 超 出 行 尾 的 单 词 将 自 动 折 回 到 下 一 行 的 开 始 。

  • SS_SIMPLE 指 定 一 个 简 单 的 矩 形 , 在 矩 形 内 显 示 一 行 左

    对 齐 的 文 本 。文 本 行 不 能 用 任 何 方 法 缩 短 或 改 变 。 ( 控 件 的 父 窗 口 或 对 话 框 不 能 处 理WM_CTLCOLOR 消 息 )

  • SS_USERITEM 指 定 一 个 用 户 自 定 义 的 项 。

  • SS_WHITEFRAME 指 定 一 个 带 边 框 的 方 框 , 用 窗 口 背 景 色 画

    出 。 缺 省值 为 白 色 。

  • SS_WHITERECT 指 定 一 个 矩 形 , 用 窗 口 背 景 色 填 充 。 缺 省

    值 为 白 色 。

请 参 阅 CStatic::Create

窗 口 风 格

  • WS_BORDER 创 建 一 个 有 边 界 的 窗 口 。

  • WS_CAPTION 创 建 一 个 有 标 题 条 的 窗 口 ( 隐 含 WS_BORDER 风

    格 ) 。不 能 与 WS_DLGFRAME 风 格 一 起 使 用 。

  • WS_CHILD 创 建 一 个 子 窗 口 。 不 能 与 WS_POPUP 风 格 一 起 使

    用 。

  • WS_CLIPCHILDREN 当 你 在 父 窗 口 中 绘 图 时 , 除 去 子 窗 口 所

    占 的 区 域 。在 创 建 父 窗 口 的 时 候 使 用 。

  • WS_CLIPSIBLINGS 剪 裁 相 关 的 子 窗 口 , 这 意 味 着 , 当 一 个

    特 定 的 子 窗

口 接 收 到 重 绘 消 息 时 , WS_CLIPSIBLINGS 风 格 将 在 子 窗 口 要 重 画 的 区 域中 去 掉 与 其 它 子 窗 口 重 叠 的 部 分 。 ( 如 果 没 有 指 定 WS_CLIPSIBLINGS 风格 , 并 且 子 窗 口 有 重 叠 , 当 你 在 一 个 子 窗 口 的 客 户 区 绘 图 时 , 它 可 能 会 画在 相 邻 的 子 窗 口 的 客 户 区 中 。 ) 只 与 WS_CHILD 风 格 一 起 使 用 。

  • WS_DISABLED 创 建 一 个 初 始 状 态 为 禁 止 的 窗 口 。

  • WS_DLGFRAME 创 建 一 个 窗 口 , 具 有 双 重 边 界 , 但 是 没 有

    标 题 条 。

  • WS_GROUP 指 定 一 组 控 件 中 的 第 一 个 , 用 户 可 以 用 箭 头

    键 在 这 组 控 件中 移 动 。 在 第 一 个 控 件 后 面 把 WS_GROUP 风 格 设 置 为 FALSE 的 控 件 都 属于 这 一 组 。 下 一 个 具 有 WS_GROUP 风 格 的 控 件 将 开 始 下 一 组 ( 这 意 味 着一 个 组 在 下 一 组 的 开 始 处 结 束 ) 。

  • WS_HSCROLL 创 建 一 个 具 有 水 平 滚 动 条 的 窗 口 。

  • WS_MAXIMIZE 创 建 一 个 最 大 化 的 窗 口 。

  • WS_MAXIMIZEBOX 创 建 一 个 具 有 最 大 化 按 钮 的 窗 口 。

  • WS_MINIMIZE 创 建 一 个 初 始 状 态 为 最 小 化 的 窗 口 。 仅 与

WS_OVERLAPPED 风 格 一 起 使 用 。

  • WS_MINIMIZEBOX 创 建 一 个 具 有 最 小 化 按 钮 的 窗 口 。

  • WS_OVERLAPPED 创 建 一 个 重 叠 窗 口 。 重 叠 窗 口 通 常 具 有 标

    题 条 和 边

界 。

  • WS_OVERLAPPEDWINDOW 创 建 一 个 具 有 W S_OVERLAPPED ,

    WS_CAPTION ,WS_SYSMENU ,WS_THICKFRAM E ,WS_MINIMIZEBOX 和 WS_MAXIMIZEBOX 风 格 的 重 叠 式 窗 口 。

  • WS_POPUP 创 建 一 个 弹 出 式 窗 口 , 不 能 与 WS_CHILD 风 格 一

    起 使 用 。

  • WS_POPUPWINDOW 创 建 一 个 具 有 WS_BORDER , WS_POPUP

    和WS_SYSMENU 风 格 的 弹 出 窗 口 。 为 了 使 控 制 菜 单 可 见 , 必 须 与WS_POPUPWINDOW 一 起 使 用 WS_CAPTION 风 格 。

  • WS_SYSMENU 创 建 一 个 在 标 题 条 上 具 有 控 制 菜 单 的 窗 口 。

    仅 对 带 标 题条 的 窗 口 使 用 。

  • WS_TABSTOP 指 定 了 一 些 控 件 中 的 一 个 , 用 户 可 以 通 过

    TAB 键 来 移 过

它 。 TAB 键 使 用 户 移 动 到 下 一 个 用 WS_TABSTOP 风 格 定 义 的 控 件 。

  • WS_THICKFRAME 创 建 一 个 具 有 厚 边 框 的 窗 口 , 可 以 通 过 厚

    边 框 来 改变 窗 口 大 小 。

  • WS_VISIBLE 创 建 一 个 最 初 可 见 的 窗 口 。

  • WS_VSCROLL 创 建 一 个 具 有 垂 直 滚 动 条 的 窗 口 。

请 参 阅 CWnd::Create, CWnd::CreateEx

扩 展 窗 口 风 格

  • WS_EX_ACCEPTFILES 指 明 用 这 个 风 格 创 建 的 窗 口 能 够 接 受

    拖 放 文

件 。

  • WS_EX_CLIENTEDGE 指 明 窗 口 具 有 3D 外 观 , 这 意 味 着 , 边

    框 具 有 下沉 的 边 界 。

  • WS_EX_CONTEXTHELP 在 窗 口 的 标 题 条 中 包 含 问 号 。 当 用 户

    单 击 问 号

时 , 鼠 标 光 标 的 形 状 变 为 带 指 针 的 问 号 。 如 果 用 户 随 后 单 击 一 个 子 窗 口 , 子 窗 口 将 接 收 到 一 个 WM_HELP 消 息 。

  • WS_EX_CONTROLPARENT 允 许 用 户 用 TAB 键 遍 历 窗 口 的 子 窗 口

  • WS_EX_DLGMODALFRAME 指 明 一 个 具 有 双 重 边 界 的 窗 口 , 当

    你 在dwStyle 参 数 中 指 定 了 W S_CAPTION 风 格 标 志 时 , 它 可 以 具 有 标 题 条 ( 可选 ) 。

  • WS_EX_LEFT 指 定 窗 口 具 有 左 对 齐 属 性 。 这 是 缺 省 值 。

  • WS_EX_LEFTSCROLLBAR 将 垂 直 滚 动 条 放 在 客 户 区 的 左 边 。

  • WS_EX_LTRREADING 按 照 从 左 到 右 的 方 式 显 示 窗 口 文 本 。

    这 是 缺 省方 式 。

  • WS_EX_MDICHILD 创 建 一 个 M D I 子 窗 口 。

  • WS_EX_NOPARENTNOTIFY 指 定 用 这 个 风 格 创 建 的 子 窗 口 在 被

    创 建 或销 毁 的 时 候 将 不 向 父 窗 口 发 送 WM_PARENTNOTIFY 消 息 。

  • WS_EX_OVERLAPPEDWINDOW

WS_EX_WIND -

合 了 WS_EX_CLIENTEDGE

OWEDGE 风 格 。

  • WS_EX_PALETTEWINDOW 组

WS_EX_WINDOWEDGE

WS_EX_TOPMOST 风 格 。

  • WS_EX_RIGHT 赋 予 窗 口 右 对 齐 属 性 。 这 与 窗 口 类 有 关 。

  • WS_EX_RIGHTSCROLLBAR 将 垂 直 滚 动 条 ( 如 果 有 ) 放 在 客 户

    区 的 右边 。 这 是 缺 省 方 式 。

  • WS_EX_RTLREADING 按 照 从 右 到 左 的 顺 序 显 示 窗 口 文 本 。

  • WS_EX_STATICEDGE 创 建 一 个 具 有 三 维 边 界 的 窗 口 , 用 于

    不 接 受 用 户输 入 的 项 。

  • WS_EX_TOOLWINDOW 创 建 一 个 工 具 窗 口 , 目 的 是 被 用 作 浮

    动 工 具条 。 工 具 窗 口 具 有 标 题 条 , 比 通 常 的 标 题 条 要 短 , 窗 口 的 标 题 是 用 小 字 体显 示 的 。 工 具 窗 口 不 出 现 在 任 务 条 或 用 户 按 下 ALT+TAB 时 出 现 的 窗 口 中 。

  • WS_EX_TOPMOST 指 定 用 这 个 风 格 创 建 的 窗 口 必 须 被 放 在

    所 有 非 顶 层窗 口 的 上 面 , 即 使 这 个 窗 口 已 经 不 处 于 激 活 状 态 , 它 还 是 保 留 在 最 上 面 。应 用 程 序 可 以 用 SetWindowsPos 成 员 函 数 来 加 入 或 去 掉 这 个 属 性 。

  • WS_EX_TRANSPARENT 指 定 了 用 这 个 风 格 创 建 的 窗 口 是 透 明

    的 。 这 意味 着 , 在 这 个 窗 口 下 面 的 任 何 窗 口 都 不 会 被 这 个 窗 口 挡 住 。 用 这 个 风 格 创建 的 窗 口 只 有 当 它 下 面 的 窗 口 都 更 新 过 以 后 才 接 收 WM_PAINT 消 息 。

  • WS_EX_WINDOWEDGE 指 定 了 具 有 凸 起 边 框 的 窗 口 。

请 参 阅 CWnd::CreateEx

MFC 使 用 的 回 调 函 数

在 微 软 基 础 类 型 中 出 现 了 三 个 回 调 函 数 。 下 面 的 主 题 中 描 述 了 传 递 给CDC::EnumObjects , CDC::GrayString 和 CDC::SetAbortProc 的 回 调 函 数 。 有 关回 调 函 数 的 一 般 用 法 参 见 这 些 处 于 函 数 的 说 明 部 分 。 注 意 所 有 的 回 调 函 数 在 返回 W indows 前 都 必 须 捕 捉 异 常 , 因 为 异 常 不 能 被 抛 到 回 调 边 界 之 外 。 有 关 异 常的 更 多 信 息 参 见 “ Visual C++ 程 序 员 指 南 ” 中 的 文 章 “ 异 常 ” 。

CDC::EnumObjects 的 回 调 函 数

int CALLBACK EXPORT ObjectFunc( LPSTR lpszLogObject , LPSTR* lpData );

参 数

lpszLogObject

指 向 一 个 LOGPEN 或 LOGBRUSH 数 据 结 构 的 指 针 , 其 中 包 含 了 有 关 对象 的 逻 辑 属 性 的 信 息 。

lpData

指 向 应 用 程 序 提 供 的 传 递 给 EnumObjects 函 数 的 数 据 。

返 回 值

这 个 回 调 函 数 返 回 一 个 整 数 。 返 回 的 值 是 用 户 定 义 的 。 如 果 回 调 函 数 返 回 0 , 则 EnumObjects 中 止 枚 举 。

说 明

ObjectFunc 名 为 应 用 程 序 提 供 的 函 数 名 预 留 的 位 置 。 实 际 的 名 字 必 须 要 引 出 。

请 参 阅 CDC::EnumObjects

CDC::GrayString 的 回 调 函 数

BOOL CALLBACK EXPORT OutputFunc( HDC hDC , LPARAM lpData , int

nCount );

返 回 值

如 果 成 功 , 回 调 函 数 的 返 回 值 必 须 是 TRU E ; 否 则 为 FALSE 。

参 数

hDC

标 识 了 位 图 的 内 存 设 备 环 境 , 其 宽 度 和 高 度 至 少 为 GrayString 涉 及 的

lpData

n W idth 和 nHeigh t 。

指 向 要 显 示 的 字 符 串 。

nCount

指 定 了 要 输 出 的 字 符 个 数 。

说 明

OutputFunc 为 应 用 程 序 提 供 的 回 调 函 数 名 预 留 了 位 置 。 回 调 函 数 ( OutputFunc) 必 须 从 ( 0 , 0 ) 而 不 是 ( x , y ) 开 始 画 出 图 形 。

请 参 阅 CDC::GrayString

CDC::SetAbortProc 的 回 调 函 数

BOOL CALLBACK EXPORT AbortFunc( HDC hP r , int code );

返 回 值

如 果 要 继 续 打 印 任 务 , 则 abort 处 理 函 数 的 返 回 值 必 须 为 非 零 值 。 如 果 要 取 消 , 则 返 回 值 为 0 。

参 数

hPr code

标 识 设 备 环 境 。

指 明 是 否 发 生 了 错 误 。 如 果 没 有 发 生 错 误 , 则 为 0 。 如 果 打 印 管 理 器 已经 用 完 了 磁 盘 空 间 , 并 且 如 果 应 用 程 序 等 待 就 能 获 得 更 多 磁 盘 空 间 , 则返回 SP_OUTOFDISK 。 如 果 code 为 SP_OUTOFDISK , 应 用 程 序 不 必 放弃 打 印 任 务 。如 果 code 不 是 SP_OUTOFDISK ,它 必 须 通 过 调 用 W indows 的 PeekMessage 或 GetMessage 函 数 服 从 打 印 管 理 器 。

说 明

AbortFunc 为 应 用 程 序 提 供 的 函 数 名 预 留 了 位 置 。 实 际 的 名 字 必 须 要 引 出 , 如

CDC::SetAbortProc 的 说 明 部 分 所 描 述 的 。

请 参 阅 CDC::SetAbortProc

消 息 映 射

这 个 部 分 列 出 了 所 有 的 消 息 映 射 宏 和 所 有 的 CWnd 消 息 映 射 条 目 及 其 对 应 的 成

员 函 数 原 型 。

分类 描 述

W M _ C O M M A N D 消 息 处 理 函 数 处 理 用 户 菜 单 选 择 或 菜 单 键 产 生 的

W M _ C O M M A N D 消 息

子 窗 口 通 知 消 息 处 理 函 数 处 理 子 窗 口 发 出 的 通 知 消 息

W M _ 消 息 处 理 函 数 处 理 W M _ 消 息 , 如 WM_PAINT

用 户 自 定 义 消 息 处 理 函 数 处 理 用 户 自 定 义 消 息

( 本 参 考 中 使 用 的 术 语 和 阅 读 的 解 释 参 见 “ 如 何 使 用 消 息 映 射 交 叉 参 考 ” )

由 于 W indows 是 一 个 面 向 消 息 的 操 作 系 统 , 在 W indows 环 境 下 很 大 一 部 分 编程 工 作 涉 及 消 息 处 理 。 每 当 发 生 一 个 事 件 , 如 击 键 或 鼠 标 点 击 , 就 会 向 应 用 程序 发 送 一 个 消 息 , 然 后 由 它 来 处 理 事 件 。

微 软 基 础 类 库 提 供 了 为 基 于 消 息 的 编 程 而 优 化 的 编 程 模 式 。在 这 种 模 式 下 ,“ 消息 映 射 ” 被 用 于 指 明 哪 个 函 数 将 为 特 定 的 类 处 理 不 同 的 消 息 。 消 息 映 射 包 含 了一 个 或 多 个 宏 , 用 以 指 定 哪 个 函 数 处 理 哪 个 消 息 。 例 如 , 一 个 包 含ON_COMMAND 宏 的 消 息 映 射 看 起 来 可 能 象 这 样 :

BEGIN_MESSAGE_MAP( CMyDoc, CDocument )

//{{AFX_MSG_MAP( CMyDoc ) ON_COMMAND( ID_MYCMD, OnMyCommand )

// ...其 它 入 口 , 用 于 处 理 另 外 的 消 息

//}}AFX_MSG_MAP

END_MESSAGE_MAP( )

ON_COMMAND 宏 被 用 于 处 理 菜 单 、 按 钮 和 加 速 键 产 生 的 命 令 消 息 。 可 以 用宏 来 映 射 下 列 消 息 :

W indows 消 息

  • 控 件 通 知

  • 用 户 自 定 义 消 息

命 令 消 息

  • 注 册 的 用 户 自 定 义 消 息

  • 用 户 界 面 更 新 消 息

消 息 范 围

  • 命令

  • 更 新 处 理 消 息

  • 控 件 通 知

尽 管 消 息 映 射 宏 很 重 要 , 通 常 你 并 不 需 要 直 接 使 用 它 们 。 这 是 因 为 当 你 用

ClassWizard 把 消 息 处 理 函 数 与 消 息 关 联 在 一 起 的 时 候 , 它 将 会 在 源 文 件 中 自 动创 建 消 息 映 射 入 口 。 不 论 何 时 你 希 望 编 辑 或 加 入 消 息 映 射 条 目 , 你 都 可 以 使 用ClassWizard 。

注 意 C lassWizard 不 支 持 消 息 映 射 范 围 。 你 必 须 自 己 写 入 这 些 消 息 映射 入 口 。

但 是 , 消 息 映 射 是 微 软 基 础 类 库 中 很 重 要 的 一 个 部 分 。 你 必 须 理 解 它 们 的 作 用 , 类 库 也 提 供 了 有 关 文 档 。

消 息 映 射 宏

为 了 支 持 消 息 映 射 , MFC 提 供 了 下 列 宏 :

消 息 映 射 的 声 明 和 分 界 宏

DECLARE_MESSAGE_MAP 声 明 将 在 一 个 类 中 使 用 消 息 映 射 , 把 消 息

映 射 到 函 数 ( 必 须 用 在 类 声 明 中 ) BEGIN_MESSAGE_MAP 开 始 消 息 映 射 的 定 义 ( 必 须 用 在 类 实 现 中 ) END_MESSAGE_MAP 结 束 消 息 映 射 的 定 义 ( 必 须 用 在 类 实 现 中 )

消 息 映 射 宏

ON_COMMAND 指 明 将 由 哪 个 函 数 处 理 指 定 的 命 令 消 息

ON_CONTROL 指 明 将 由 哪 个 函 数 处 理 指 定 的 控 件 通 知消 息

ON_MESSAGE 指 明 将 由 哪 个 函 数 处 理 用 户 自 定 义 的 消息

ON_OLECMD 指 明 将 由 哪 个 函 数 处 理 DocObject 或 其 容器 发 出 的 菜 单 命 令

ON_REGISTERED_MESSAGE 指 明 将 由 哪 个 函 数 处 理 注 册 的 用 户 自 定义 消 息

ON_REGISTERED_THREAD_ MESSAGE

指 明 当 你 拥 有 一 个 C W inThread 类 时 , 将由 哪 个 函 数 处 理 注 册 的 用 户 自 定 义 消 息

ON_THREAD_MESSAGE 指 明 当 你 拥 有 一 个 C W inThread 类 时 , 将

由 哪 个 函 数 处 理 用 户 自 定 义 消 息

ON_UPDATE_COMMAND_UI 指 明 将 由 哪 个 函 数 处 理 指 定 的 用 户 界 面

更 新 命 令 消 息

消 息 映 射 范 围 宏

ON_COMMAND_RANGE 指 明 将 由 哪 个 函 数 处 理 该 宏 的 前 两 个 参

数 所 指 定 的 范 围 内 的 命 令 ID

ON_UPDATE_COMMAND_UI_ RANGE

指 明 将 由 哪 个 更 新 处 理 器 处 理 该 宏 的 前两 个 参 数 所 指 定 的 范 围 内 的 命 令 ID

ON_CONTROL_RANGE 指 明 将 由 哪 个 函 数 处 理 该 宏 的 第 二 和 第

三 个 参 数 所 指 定 的 范 围 内 的 控 制 ID 发 出的 通 知 。 第 一 个 参 数 是 一 个 控 件 通 知 消息 , 例 如 BN_CLICKED

有 关 消 息 映 射 、消 息 映 射 的 声 明 和 分 界 宏 以 及 消 息 映 射 宏 的 更 多 的 信 息 参 见“ 消息 处 理 ” 和 “ 映 射 主 题 ” 。 有 关 消 息 映 射 范 围 的 更 多 信 息 参 见 “ 消 息 映 射 范 围的 处 理 函 数 ”。有 关 如 何 使 用 ClassWizard 的 更 多 信 息 参 见“ 使 用 ClassWizard ”。这 些 参 考 都 在 “ Visual C++ 程 序 员 指 南 ” 中 。

如 何 使 用 消 息 映 射 交 叉 参 考

在 标 着 <memberFxn> 的 条 目 中 , 写 入 你 的 CWnd 派 生 类 的 成 员 函 数 。 可 以 给 你的 函 数 取 任 意 一 个 你 喜 欢 的 名 字 。 其 它 函 数 , 例 如 OnActive, 是 CWnd 类 的 成员 函 数 。 如 果 调 用 了 它 们 , 它 们 将 消 息 传 递 给 W indows 的 DefWindowProc 函数 。 如 果 要 处 理 W indows 通 知 消 息 , 在 你 自 己 的 类 中 重 载 相 应 的 CWnd 成 员函 数 。 你 可 以 在 函 数 中 调 用 基 类 的 被 重 载 的 函 数 , 使 基 类 和 W indows 能 够 回 应消 息 。

在 所 有 的 情 况 下 , 将 函 数 原 型 放 入 CWnd 派 生 类 的 头 文 件 中 , 并 按 照 下 面 的 方式 编 写 消 息 映 射 入 口 。

使 用 了 下 面 的 术 语 :

术语

定义

id

任 何

ID

( W M _ C O M M A N D 消 息 ) 或 控 件 ( 子 窗口 通 知 消 息 ) ID

"message" 和 "wNotifyCode" W INDOWS.H 中 定 义 的 W indows 消 息 ID n M essageVariable 包 含 了 W indows 的

RegisterWindowsMessage 函 数 的 返 回 值 的变 量 的 名 字 。 它 必 须 被 声 明 为 NEAR

WM_COMMAND 消 息 处 理 函 数

映射入口 函数原型

ON_COMMAND( <id>,<memberFxn> ) afx_msg void memberFxn( );

子 窗 口 通 知 消 息 处 理 函 数

子 窗 口 通 知 消 息 有 五 个 部 分 :

分类 描述

通 用 控 件 处 理 函 数 处 理 通 用 控 件 通 知 代 码

用 户 按 钮 处 理 函 数 处 理 用 户 按 钮 通 知 代 码

组 合 框 处 理 函 数 处 理 组 合 框 通 知 代 码

续表

编 辑 控 件 处 理 函 数 处 理 编 辑 控 件 通 知 代 码

列 表 框 处 理 函 数 处 理 列 表 框 通 知 代 码

  • 般 控 件 处 理 函 数

映射入口 函 数 原 型

ON_CONTROL( <wNotifyCode>,<id>,

<memberFxn> )

afx_msg void memberFxn( );

用 户 按 钮 处 理 函 数

映射入口 函 数 原 型

ON_BN_CLICKED(<id>, <memberFxn> ) afx_msg void memberFxn( ) ON_BN_DISABLE(<id>, <memberFxn> ) afx_msg void memberFxn( )

ON_BN_DOUBLECLICKED(<id>,

<memberFxn> )

afx_msg void memberFxn( )

ON_BN_HILITE(<id>, <memberFxn> ) afx_msg void memberFxn( ) ON_BN_PAINT( <id>, <memberFxn> ) afx_msg void memberFxn( ) ON_BN_UNHILITE(<id>, <memberFxn> ) afx_msg void memberFxn( )

组 合 框 处 理 函 数

映射入口 函 数 原 型

ON_CBN_CLOSEUP(<id>, <memberFxn> ) afx_msgvoid memberFxn( ) ON_CBN_DBLCLK(<id>, <memberFxn> ) afx_msgvoid memberFxn( ) ON_CBN_DROPDOWN(<id>, <memberFxn> ) afx_msgvoid memberFxn( )

ON_CBN_EDITCHANGE(<id>,

<memberFxn> ) ON_CBN_EDITUPDATE(<id>,

<memberFxn> )

afx_msgvoid memberFxn( ) afx_msgvoid memberFxn( )

ON_CBN_ERRSPACE(<id>, <memberFxn> ) afx_msgvoid memberFxn( )

ON_CBN_KILLFOCUS(<id>, <memberFxn> ) afx_msgvoid memberFxn( ) ON_CBN_SELCHANGE(<id>, <memberFxn> ) afx_msgvoid memberFxn( )

ON_CBN_SELENDCANCEL(<id>,

<memberFxn> )

afx_msgvoid memberFxn( )

ON_CBN_SELENDOK(<id>, <memberFxn> ) afx_msgvoid memberFxn( ) ON_CBN_SETFOCUS(<id>, <memberFxn> ) afx_msgvoid memberFxn( )

编 辑 控 件 处 理 函 数

映射入口 函 数 原 型

ON_EN_CHANGE(<id>, <memberFxn> ) afx_msg void memberFxn( )

续表ON_EN_ERRSPACE(<id>, <memberFxn> ) afx_msg void memberFxn( ) ON_EN_HSCROLL(<id>, <memberFxn> ) afx_msg void memberFxn( )

ON_EN_KILLFOCUS(<id>,

<memberFxn> )

afx_msg void memberFxn( )

ON_EN_MAXTEXT(<id>, <memberFxn> ) afx_msg void memberFxn( ) ON_EN_SETFOCUS(<id>, <memberFxn> ) afx_msg void memberFxn( ) ON_EN_UPDATE(<id>, <memberFxn> ) afx_msg void memberFxn( ) ON_EN_VSCROLL(<id>, <memberFxn> ) afx_msg void memberFxn( )

列 表 框 控 件 处 理 函 数

映射入口 函 数 原 型

ON_LBN_DBLCLK(<id>, <memberFxn> ) afx_msg void memberFxn( ) ON_LBN_ERRSPACE(<id>, <memberFxn> ) afx_msg void memberFxn( )

ON_LBN_KILLFOCUS(<id>,

<memberFxn> ) ON_LBN_SELCHANGE(<id>,

<memberFxn> )

afx_msg void memberFxn( ) afx_msg void memberFxn( )

ON_LBN_SETFOCUS(<id>, <memberFxn> ) afx_msg void memberFxn( )

W M _ 消 息 处 理 函 数

主题 映 射 入 口

A – C ON_WM_ACTIVATE 到 ON_WM_CTLCOLOR

D – E ON_WM_DEADCHAR 到 ON_WM_ERASEBKGND F – K ON_WM_FONTCHANGE 到 O N_WM_KILLFOCUS L – M ON_WM_LBUTTONDBLCLK 到 ON_WM_MOVING

N – O ON_WM_NCACTIVATE 到 O N _ WM_NCRBUTTONUP P – R ON_WM_PAINT 到 ON_WM_RENDERFORMAT

  1. ON_WM_SETCURSOR 到 ON_WM_SYSKEYUP

  2. – Z ON_WM_TIMECHANGE 到 O N _ W M _ W ININICHANGE

WM_ 消 息 处 理 函 数 : A - C

映射入口

函数原型

ON_WM_ACTIVATE( )

afx_msg void OnActivate( UINT,

CWnd*,

ON_WM_ACTIVATEAPP( )

BOOL )

afx_msg void OnActivateApp(

BOOL,

HANDLE )

ON_WM_ASKCBFORMATN AME( )

afx_msgvoid OnAskCbFormatName( UINT, LPSTR )

ON_WM_CANCELMODE( ) afx_msg void OnCancelMode( )

ON_WM_CAPTURECHANGED( ) afx_msgvoid

OnCaptureChanged( CWnd* ) ON_WM_CHANGECBCHAIN( ) afx_msgvoid

OnChangeCbChain(HWND, HWND )

ON_WM_CHAR( ) afx_msg void OnChar( UINT, UINT, UINT )

ON_WM_CHARTOITEM( ) afx_msg int OnCharToItem( UINT,

CWnd*, UINT )

ON_WM_CHILDACTIVATE( ) afx_msg void OnChildActivate( ) ON_WM_CLOSE( ) afx_msg void OnClose( ) ON_WM_COMPACTING( ) afx_msgvoid OnCompacting( UINT )

ON_WM_COMPAREITEM( ) afx_msgint OnCompareItem

( LPCOMPAREITEMSTRUCT )

ON_WM_CONTEXTMENU( ) afx_msgvoid OnContextMenu

( CWnd*, CPoint )

ON_WM_COPYDATA( ) afx_msgBOOL OnCopyData (CWnd* Pwnd, COPYDATASTRUCT*

pCopyDataStruct)

ON_WM_CREATE( ) afx_msgint

OnCreate( LPCREATESTRUCT )

ON_WM_CTLCOLOR( ) afx_msg HBRUSH

OnCtlColor( CDC*, CWnd*, UINT )

WM_ 消 息 处 理 函 数 : D - E

映 射 入 口 函 数 原 型

ON_WM_DEADCHAR( ) afx_msg void OnDeadChar( UINT,

UINT, UINT )

ON_WM_DELETEITEM( ) afx_msgvoid OnDeleteItem

( LPDELETEITEMSTRUCT )

ON_WM_DESTROY( ) afx_msg void OnDestroy( ) ON_WM_DESTROYCLIPBOARD( ) afx_msg void OnDestroyClipboard( ) ON_WM_DEVICECHANGE( ) afx_msgvoid OnDeviceChange( UINT,

D W O R D )

ON_WM_DEVMODECHANGE( ) afx_msgvoid

OnDevModeChange( LPSTR ) ON_WM_DRAWCLIPBOARD( ) afx_msg void OnDrawClipboard( )

ON_WM_DRAWITEM( ) afx_msgvoid OnDrawItem

( LPDRAWITEMSTRUCT )

ON_WM_DROPFILES( ) afx_msg void OnDropFiles( HDROP ) ON_WM_ENABLE( ) afx_msg void OnEnable( BOOL ) ON_WM_ENDSESSION( ) afx_msg void OnEndSession( BOOL ) ON_WM_ENTERIDLE( ) afx_msg void OnEnterIdle( UINT,

CWnd* )

ON_WM_ERASEBKGND( ) afx_msg BOOL OnEraseBkgnd

( CDC * )

W M _ 消 息 处 理 函 数 : F – K

映射入口 函 数 原 型

ON_WM_FONTCHANGE( ) afx_msg void OnFontChange( ) ON_WM_GETDLGCODE( ) afx_msg UINT OnGetDlgCode( ) ON_WM_GETMINMAXINFO( ) afx_msgvoid

OnGetMinMaxInfo( LPPOINT )

ON_WM_HELPINFO( ) afx_msgBOOL OnHelpInfo( HELPINFO* )

ON_WM_HSCROLL( ) afx_msg void OnHScroll( UINT, UINT, CWnd* )

ON_WM_HSCROLLCLIPBOARD() afx_msg void OnHScrollClipboard

(CWnd*,UINT,UINT)

ON_WM_ICONERASEBKGND( ) afx_msg void OnIconEraseBkgnd

( CDC * )

ON_WM_INITMENU( ) afx_msg void OnInitMenu( CMenu

* )

ON_WM_INITMENUPOPUP( ) afx_msgvoid OnInitMenuPopup

( CMenu *, UINT, BOOL )

ON_WM_KEYDOWN( ) afx_msg void OnKeyDown( UINT, UINT, UINT )

ON_WM_KEYUP( ) afx_msg void OnKeyUp( UINT, UINT, UINT )

ON_WM_KILLFOCUS( ) afx_msgvoid OnKillFocus( CWnd* )

W M _ 消 息 处 理 函 数 : L - M

映射入口 函 数 原 型

ON_WM_LBUTTONDBLCLK( ) afx_msgvoid OnLButtonDblClk

( UINT, Cpoint )

ON_WM_LBUTTONDOWN( ) afx_msg void OnLButtonDown( UINT,

CPoint )

ON_WM_LBUTTONUP( ) afx_msg void OnLButtonUp( UINT,

CPoint ) ON_WM_MBUTTONDBLCLK( ) afx_msgvoid

OnMButtonDblClk( UINT, CPoint ) ON_WM_MBUTTONDOWN( ) afx_msgvoid OnMButtonDown( UINT,

CPoint )

ON_WM_MBUTTONUP( ) afx_msg void OnMButtonUp( UINT,

CPoint )

ON_WM_MDIACTIVATE( ) afx_msgvoid OnMDIActivate( BOOL,

CWnd*, CWnd* )

ON_WM_MEASUREITEM() afx_msgvoid OnMeasureItem

( LPMEASUREITEMSTRUCT )

ON_WM_MENUCHAR( ) afx_msgLONG OnMenuChar( UINT,

UINT, CMenu * ) ON_WM_MENUSELECT( ) afx_msg void OnMenuSelect( UINT,

UINT, HMENU )

ON_WM_MOUSEACTIVATE( ) afx_msgint OnMouseActivate( CWnd*,

UINT, UINT )

ON_WM_MOUSEMOVE( ) afx_msg void OnMouseMove( UINT,

CPoint )

ON_WM_MOUSEWHEEL( ) afx_msgBOOL OnMouseWheel( UINT,

short, CPoint )

ON_WM_MOVE( ) afx_msg void OnMove( int, int )

ON_WM_MOVING( ) afx_msg void OnMoving( UINT, LPRECT )

W M _ 消 息 处 理 函 数 : N – O

映射入口 函 数 原 型

ON_WM_NCACTIVATE( ) afx_msgBOOL OnNcActivate( BOOL )

ON_WM_NCCALCSIZE( ) afx_msgvoid OnNcCalcSize (BOOL, NCCALCSIZE

_PARAMSFAR* )

ON_WM_NCCREATE( ) afx_msgBOOL OnNcCreate ( LPCREATESTRUCT )

ON_WM_NCDESTROY( ) afx_msg void OnNcDestroy( )

ON_WM_NCHITTEST( ) afx_msgUINT OnNcHitTest( Cpoint )

ON_WM_NCLBUTTONDBLCLK( ) afx_msgvoid OnNcLButtonDblClk

( UINT, CPoint )

ON_WM_NCLBUTTONDOWN( ) afx_msgvoid OnNcLButtonDown

( UINT, CPoint )

ON_WM_NCLBUTTONUP( ) afx_msgvoid

OnNcLButtonUp( UINT, CPoint ) ON_WM_NCMBUTTONDBLCLK( ) afx_msgvoid OnNcMButton

DblClk( UINT, Cpoint )

ON_WM_NCMBUTTONDOWN( ) afx_msgvoid OnNcMButtonDown

( UINT, CPoint )

ON_WM_NCMBUTTONUP( ) afx_msgvoid

OnNcMButtonUp( UINT, CPoint )

ON_WM_NCMOUSEMOVE( ) afx_msgvoid OnNcMouseMove

( UINT, CPoint )

ON_WM_NCPAINT( ) afx_msg void OnNcPaint( ) ON_WM_NCRBUTTONDBLCLK( ) afx_msgvoid OnNcRButton

DblClk UINT, CPoint )

ON_WM_NCRBUTTONDOWN( ) afx_msgvoid OnNcRButtonDown

( UINT, Cpoint )

ON_WM_NCRBUTTONUP( ) afx_msgvoid

OnNcRButtonUp( UINT, CPoint )

WM_ 消 息 : P - R

映射入口 函 数 原 型

ON_WM_PAINT( ) afx_msg void OnPaint( )

ON_WM_PAINTCLIPBOARD( ) afx_msgvoid OnPaintClipboard

( CWnd*, HANDLE )

ON_WM_PALETTECHANGED( ) afx_msgvoid

OnPaletteChanged( CWnd* ) ON_WM_PALETTEISCHANGING( ) afx_msgvoid

OnPaletteIsChanging( CWnd* )

ON_WM_PARENTNOTIFY( ) afx_msgvoid OnParentNotify

( UINT, LONG ) ON_WM_QUERYDRAGICON( ) afx_msgHCURSOR

OnQueryDragIcon( ) ON_WM_QUERYENDSESSION( ) afx_msgBOOL

OnQueryEndSession( )

ON_WM_QUERYNEWPALETTE( ) afx_msgBOOL

OnQueryNewPalette( )

ON_WM_QUERYOPEN( ) afx_msg BOOL OnQueryOpen( )

ON_WM_RBUTTONDBLCLK( ) afx_msgvoid OnRButtonDblClk

( UINT, CPoint )

ON_WM_RBUTTONDOWN( ) afx_msgvoid OnRButtonDown

( UINT, CPoint )

ON_WM_RBUTTONUP( ) afx_msg void OnRButtonUp ( UINT, CPoint )

ON_WM_RENDERALLFORMATS( ) afx_msgvoid

OnRenderAllFormats( )

ON_WM_RENDERFORMAT( ) afx_msgvoid OnRenderFormat( UINT )

WM_ 消 息 : S

映射入口 函 数 原 型

ON_WM_SETCURSOR( ) afx_msg BOOL OnSetCursor

( CWnd*, UINT, UINT )

ON_WM_SETFOCUS( ) afx_msg void OnSetFocus( CWnd* )

ON_WM_SHOWWINDOW( ) afx_msg void OnShowWindow

( BOOL, UINT )

ON_WM_SIZE( ) afx_msg void OnSize( UINT, int, int )

ON_WM_SIZECLIPBOARD( ) afx_msgvoid OnSizeClipboard

( CWnd*, HANDLE )

ON_WM_SIZING( ) afx_msg void OnSizing( UINT, LPRECT )

ON_WM_SPOOLERSTATUS( ) afx_msg void OnSpoolerStatus

( UINT, UINT )

ON_WM_STYLECHANGED( ) afx_msg void OnStyleChanged( int,

LPSTYLESTRUCT )

ON_WM_STYLECHANGING( ) afx_msg void OnStyleChanging( int,

LPSTYLESTRUCT )

ON_WM_SYSCHAR( ) afx_msg void OnSysChar( UINT, UINT, UINT )

ON_WM_SYSCOLORCHANGE( ) afx_msg void OnSysColorChange( )

ON_WM_SYSCOMMAND( ) afx_msg void OnSysCommand

( UINT, LONG )

ON_WM_SYSDEADCHAR( ) afx_msg void OnSysDeadChar

( UINT, UINT, UINT )

ON_WM_SYSKEYDOWN( ) afx_msg void OnSysKeyDown

( UINT, UINT, UINT )

ON_WM_SYSKEYUP( ) afx_msg void OnSysKeyUp( UINT,

UINT, UINT )

映射入口

函 数 原 型

ON_WM_TCARD( )

afx_msg

void

OnTCard(

UINT,

DWORD )

ON_WM_TIMECHANGE( ) afx_msg void OnTimeChange( )

ON_WM_TIMER( ) afx_msg void OnTimer( UINT )

ON_WM_VKEYTOITEM( ) afx_msg int OnVKeyToItem ( UINT, CWnd*, UINT )

ON_WM_VSCROLL( ) afx_msg void OnVScroll( UINT, UINT, CWnd* )

ON_WM_VSCROLLCLIPBOARD( ) afx_msgvoid OnVScrollClipboard

( CWnd*, UINT, UINT )

ON_WM_WINDOWPOSCHANGED( ) afx_msgvoid

OnWindowPosChanged

( W INDOWPOS* lpwndpos ) ON_WM_WINDOWPOSCHANGING( ) afx_msgvoid

OnWindowPosChanging

( W INDOWPOS*lpwndpos )

ON_WM_WININICHANGE( ) afx_msgvoid OnWinIniChange( LPSTR )

映射入口 函 数 原 型

ON_MESSAGE(<message>, <memberFxn> ) afx_msgLRESULT

memberFxn

( W P A R A M , LPARAM ) ;

ON_REGISTERED_MESSAGE

(<nMessageVariable>, <memberFxn> )

ON_THREAD_MESSAGE( <message>,

<memberFxn> ) ON_REGISTERED_THREAD_MESSAGE

(<nMessageVariable>, <memberFxn> )

afx_msgLRESULT memberFxn

W P A R A M , LPARAM ) ;

afx_msgvoid

memberFxn( UINT, LONG ) afx_msgvoid memberFxn

( UINT, LONG ) ;

旧 的 MFC 函 数

下 面 的 函 数 在 MFC 6 .0 中 没 有 实 现 :

  • CDatabase::InWaitForDataSource

  • CDatabase::OnWaitForDataSource

  • CDatabase::SetSynchronousMode

  • CRecordset::On W aitForDataSource

  • CTabCtrl::GetBkColor

  • CTabCtrl::SetBkColor

  • CTabCtrl::SetItemExtra

  • C W inApp::InitApplication

  • CWnd::GetSuperWndProcAddr

CDatabase::In W a itForDataSource

说 明

在 MFC4.2 中 , CDatabase::OnWaitForDataSource 已 经 过 时 了 。 现 在 MFC ODBC 类 只 使 用 同 步 处 理 。 如 果 要 开 始 异 步 操 作 , 你 必 须 直 接 调 用 ODBC API 函 数SQLSetConnetOption 。 更 多 的 信 息 参 见 ODBC SDK 程 序 员 指 南 中 的 “ 异 步 执 行函 数 ” 主 题 。

说 明

在 MFC4.2 中 , CDatabase::WaitForDataSource 已 经 过 时 了 。 现 在 MFC ODBC 类 只 使 用 同 步 处 理 。 如 果 要 开 始 异 步 操 作 , 你 必 须 直 接 调 用 ODBC API 函 数SQLSetConnetOption 。 更 多 的 信 息 参 见 ODBC SDK 程 序 员 指 南 中 的 “ 异 步 执 行函 数 ” 主 题 。

CDatabase::SetSynchronousMode

说 明

在 MFC4.2 中 , CDatabase::SetSynchronousMode 已 经 过 时 了 。 现 在 MFC ODBC 类 只 使 用 同 步 操 作 。 如 果 要 开 始 异 步 操 作 , 你 必 须 直 接 调 用 ODBC API 函 数SQLSetConnetOption 。 更 多 的 信 息 参 见 ODBC SDK 程 序 员 指 南 中 的 “ 异 步 执 行函 数 ” 主 题 。

注意 尽 管 SetSynchronousMode 已 经 过 时 , 但 是 如 果 你 使 用 了 这 个 成 员函 数 ,你 的 代 码 还 是 能 够 被 编 译 。SetSynchronousMode 会 产 生 一 个 TRACE 消 息 , 不 做 任 何 操 作 。

说 明

在 MFC4.2 中 ,C R ecordset::OnWaitForDataSource 已 经 过 时 了 。 现 在 MFC ODBC 类 只 使 用 同 步 操 作 。 如 果 要 开 始 异 步 操 作 , 你 必 须 直 接 调 用 ODBC API 函 数SQLSetConnetOption 。 更 多 的 信 息 参 见 ODBC SDK 程 序 员 指 南 中 的 “ 异 步 执 行函 数 ” 主 题 。

CTabCtrl::GetBkColor

说 明

GetBkColor 和 SetBkColor 成 员 函 数 对 CTabCtrl 类 不 再 有 效 。 这 些 成 员 函 数 在MFC 中 没 有 实 现 , 因 为 它 们 依 赖 的 W indows95 的 TCM_SETCOLOR 消 息 没 有实 现 。

请 参 阅 W in32 程 序 员 参 考 中 的 COLORREF

说 明

SetBkColor 和 GetBkColor 成 员 函 数 对 CTabCtrl 类 不 再 有 效 。 这 些 成 员 函 数 在MFC 中 没 有 实 现 , 因 为 它 们 依 赖 的 W indows95 的 TCM_SETCOLOR 消 息 没 有实 现 。

请 参 阅 W in32 程 序 员 参 考 中 的 COLORREF

C W inApp::InitApplication

说 明

在 MFC 中 , C W inApp::InitApplication 成 员 函 数 已 经 过 时 了 。 你 可 能 在InitApplication 中 做 的 初 始 化 工 作 应 该 被 移 到 InitInstance 中 。 如 果 你 重 载 了C W inApp::InitApplication , 并 且 你 没 有 调 用 基 类 函 数 , 你 将 会 漏 出 一 个C W inApp::AddDocTemplate 加 入 的 CDocTemplate 对 象 。

请 参 阅 C W inApp::InitInstance

说 明

这 个 函 数 已 经 过 时 。 你 不 需 要 重 载 这 个 函 数 , 因 为 CWnd 的 缺 省 实 现 将 这 个 指针 保 存 在 所 有 的 CWnd 对 象 中 。