结 构 、 风 格 、 回 调 函 数 和 消 息 映 射
这 个 部 分 描 述 了 微 软 基 础 类 库 使 用 的 结 构 , 风 格 和 回 调 函 数 , 还 描 述 了 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 和 密 码 被 保 存 在 连 接 信 息 中 。
|
指 明 这 个 表 是 由 | M icrosoft | Jet 数 据 库 引 擎 提 供 的 系 统 |
---|---|---|---|
表 ( 只 读 ) 。 |
|||
|
指 明 这 个 表 是 由 | 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
指 定 了 画 笔 的 风 格 。 这 个 成 员 可 以 是 以 下 值 之 一 :
|
创 建 实 心 的 画 笔 。 |
||
---|---|---|---|
|
创 建 短 线 画 笔 。 ( 仅 当 画 笔 宽 度 为 |
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 指 定 了 在 对 话 框 中 显 示 的 图 标 。 给 定 的 文 本 是
资 源 文 件 中 定义 的 图 标 名 ( 不 是 文 件 名 ) 。 nWidth 和 nHeight 参 数 被 忽 略 , 图 标 自 动 调整 自 己 的 大 小 。
-
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_WIND - |
组 |
合 了 WS_EX_CLIENTEDGE |
和 | |
---|---|---|---|---|
OWEDGE 风 格 。
|
合 |
了 |
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
-
ON_WM_SETCURSOR 到 ON_WM_SYSKEYUP
-
– 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 对 象 中 。