C W n d

CWnd 类 提 供 了 微 软 基 础 类 库 中 所 有 窗 口 类 的 基 本 功 能 。

CWnd 对 象 与 W indows 的 窗 口 不 同 ,但 是 两 者 有 紧 密 联 系 。CWnd 对 象 是 由 CWnd 的 构 造 函 数 和 析 构 函 数 创 建 或 销 毁 的 。 另 一 方 面 , W indows 的 窗 口 是 W indows 的 一 种 内 部 数 据 结 构 , 它 是 由 CWnd 的 Create 成 员 函 数 创 建 的 , 而 由 CWnd 的虚 拟 析 构 函 数 销 毁 。 Destroy W indow 函 数 销 毁 W indows 的 窗 口 , 但 是 不 销 毁 对象 。

CWnd 类 和 消 息 映 射 机 制 隐 藏 了 WndProc 函 数 。 接 收 到 的 W indows 通 知 消 息通 过 消 息 映 射 被 自 动 发 送 到 适 当 的 CWnd OnMessage 成 员 函 数 。 你 可 以 在 派 生

类 中 重 载 OnMessage 成 员 函 数 以 处 理 成 员 的 特 定 消 息 。

CWnd 类 同 时 还 使 你 能 够 为 应 用 程 序 创 建 W indows 的 子 窗 口 。 先 从 CWnd 继 承一 个 类 , 然 后 在 派 生 类 中 加 入 成 员 变 量 以 保 存 与 你 的 应 用 程 序 有 关 的 数 据 。 在派 生 类 中 实 现 消 息 处 理 成 员 函 数 和 消 息 映 射 , 以 指 定 当 消 息 被 发 送 到 窗 口 时 应该 如 何 动 作 。

你 可 以 经 过 两 个 步 骤 来 创 建 一 个 子 窗 口 。 首 先 , 调 用 构 造 函 数 CWnd 以 创 建 一个 CWnd 对 象 , 然 后 调 用 Create 成 员 函 数 以 创 建 子 窗 口 并 将 它 连 接 到 CWnd 对象 。

当 用 户 关 闭 你 的 子 窗 口 时 , 应 销 毁 CWnd 对 象 , 或 者 调 用 DestroyWindow 成 员函 数 以 清 除 窗 口 并 销 毁 它 的 数 据 结 构 。

在 微 软 基 础 类 库 中 , 从 CWnd 派 生 了 许 多 其 它 类 以 提 供 特 定 的 窗 口 类 型 。 这 些类 中 有 许 多 , 包 括 CFrameWnd , CMDIFrameWnd , CMDIChildWnd , CView 和CDialog , 被 用 来 进 一 步 派 生 。 从 CWnd 派 生 的 控 件 类 , 如 CButton, 可 以 被 直接 使 用 , 也 可 以 被 进 一 步 派 生 出 其 它 类 来 。

#include <afxwin.h>

请 参 阅 CFrame W nd, CView

CWnd 类 成 员

初 始 化

对 话 框 项 函 数

初 始 化 消 息 处 理 函 数

窗 口 状 态 函 数

数 据 绑 定 函 数

系 统 消 息 处 理 函 数

窗 口 大 小 和 位 置

菜 单 函 数

一 般 消 息 处 理 函 数

窗 口 访 问 函 数

工 具 提 示 函 数

控 件 消 息 处 理 函 数

更新 /绘 图 函 数

定 时 器 函 数

输 入 消 息 处 理 函 数

坐 标 映 射 函 数

警 告 函 数

非 客 户 区 消 息 处 理 函 数

窗 口 文 本 函 数

窗 口 消 息 函 数

MDI 消 息 处 理 函 数

滚 动 函 数

剪 贴 板 函 数

剪 贴 板 消 息 处 理 函 数

拖 放 函 数

OLE 控 件

菜 单 循 环 通 知

插 字 符 号 函 数

可 重 载 函 数

Data Members

m_hWnd 指 明 与 这 个 CWnd 对 象 相 关 联 的 H W N D 句柄

Construction /Destruction

CWnd 构 造 一 个 CWnd 对 象

DestroyWindow 销 毁 相 关 联 的 W indows 窗 口

Initialization

Create 创 建 并 初 始 化 与 CWnd 对 象 相 关 联 的 子 窗 口PreCreateWindow 在与 CWnd 对 象 相 关 联 的 窗 口 被 创 建 之 前 调 用CalcWindowRect 调 用 这 个 函 数 以 计 算 窗 口 客 户 区 的 矩 形GetStyle 返 回 当 前 的 窗 口 风 格

GetExStyle 返 回 窗 口 的 扩 展 风 格

Attach 将 W indows 句 柄 与 CWnd 对 象 相 连 接

Detach 将 一 个 W indows 句 柄 从 CWnd 对 象 上 分 离 并 返回 这 个 句 柄

PreSubclassWindow 在 调 用 SubclassWindow 之 前 , 允 许 其 它 必 要 的

子 类 化 工 作

SubclassWindow 将 窗 口 与 CWnd 对 象 相 连 接 , 并 使 它 通 过 CWnd

的 消 息 映 射 转 发 消 息

UnsubclassWindow 将 窗 口 与 CWnd 对 象 分 离

FromHandle 当 给 定 一 个 窗 口 的 句 柄 时 , 返 回 CWnd 对 象 的 指针 。 如 果 没 有 CWnd 对 象 与 这 个 句 柄 相 连 接 , 则创 建 一 个 临 时 的 CWnd 对 象 并 与 之 相 连 接

FromHandlePermanent 当 给 定 一 个 窗 口 的 句 柄 时 , 返 回 CWnd 对 象 的 指

针 。 如 果 没 有 CWnd 对 象 与 这 个 句 柄 相 连 接 , 则 返 回 NULL

DeleteTempMap CWinApp 的 空 闲 处 理 函 数 自 动 调 用 这 个 函 数 ,

清 除 由 FromHandle 创 建 的 任 何 临 时 CWnd 对 象

GetSafeHwnd 返 回 m_hW n d , 如 果 该 指 针 为 NULL , 则 返 回

NULL

CreateEx 创 建 一 个 W indows 的 可 重 叠 窗 口 、 弹 出 窗 口 或子 窗 口 , 并 把 它 连 接 到 一 个 CWnd 对 象 上

CreateControl 创 建 一 个 OLE 控 件 , 该 控 件 在 MFC 程 序 中 由 一

个 CWnd 对 象 代 表

Window State Funtions

Is W indowEnabled 确 定 一 个 窗 口 是 否 允 许 鼠 标 和 键 盘 输 入

EnableWindow 允 许 或 禁 止 鼠 标 和 键 盘 输 入

GetActiveWindow 获 得 激 活 的 窗 口

SetActiveWindow 激 活 窗 口

GetCapture 获 得 捕 获 鼠 标 的 CWnd

SetCapture 使 随 后 的 鼠 标 输 入 都 被 发 送 到 这 个 CWnd

GetFocus 获 得 当 前 具 有 输 入 焦 点 的 CWnd

SetFocus 要 求 输 入 焦 点

GetDesktopWindow 获得 W indows 的 桌 面 窗 口

GetForegroundWindow 返 回 前 台 窗 口 的 指 针 ( 顶 层 窗 口 , 用 户 正 在 其 中

工 作 )

SetForegroundWindow 使 创 建 窗 口 的 线 程 变 为 前 台 并 激 活 窗 口

GetIcon 获 得 图 标 的 句 柄

SetIcon 设 置 指 定 图 标 的 句 柄GetWindowContextHelpId 获 得 帮 助 上 下 文 的 标 识 符SetWindowContextHelpId 设 置 帮 助 上 下 文 的 标 识 符ModifyStyle 修 改 当 前 的 窗 口 风 格

ModifyStyleEx 修 改 窗 口 的 扩 展 风 格

WindowSize and Position

GetWindowPlacement 获 得 窗 口 的 显 示 状 态 以 及 正 常 ( 还 原 ) 的 、 最 大

化 和 最 小 化 的 位 置

SetWindowPlacement 设 置 窗 口 的 显 示 状 态 以 及 正 常 ( 还 原 ) 的 、 最 大

化 和 最 小 化 的 位 置

GetWindowRgn 获 得 窗 口 的 窗 口 区 域 的 一 个 拷 贝

SetWindowRgn 设 置 窗 口 的 区 域

IsIconic 确定 CWnd 是 否 被 最 小 化 ( 图 标 化 )

IsZoomed 确定 CWnd 是 否 被 最 大 化

MoveWindow 改变 CWnd 的 位 置 和 大 小

SetWindowPos 改 变 子 窗 口 、 弹 出 窗 口 和 顶 层 窗 口 的 大 小 、 位 置

以 及 顺 序

ArrangeIconic W indows 排 列 所 有 最 小 化 ( 图 标 化 ) 的 子 窗 口BringWindowToTop 使 CWnd 到 达 重 叠 窗 口 堆 栈 的 顶 部GetWindowRect 获得 CWnd 的 屏 幕 坐 标

GetClientRect 获得 CWnd 客 户 区 域 的 大 小

WindowAccess Functions

ChildWindowFromPoint 确 定 哪 个 子 窗 口 包 含 指 定 的 点 , 如 果 有 的 话FindWindow 返 回 由 窗 口 名 或 窗 口 类 标 识 的 窗 口 的 句 柄GetNextWindow 返 回 窗 口 管 理 器 列 表 中 的 下 一 个 ( 或 前 一 个 ) 窗

GetOwner 获得 CWnd 的 拥 有 者 的 指 针

SetOwner 改变 CWnd 的 拥 有 者

GetTopWindow 返回 CWnd 所 属 的 第 一 个 子 窗 口

GetWindow 返 回 与 窗 口 有 特 定 关 系 的 窗 口 GetLastActivePopup 确定 CWnd 拥 有 的 弹 出 窗 口 是 否 最 近 被 激 活IsChild 指明 CWnd 是 指 定 窗 口 的 一 个 子 窗 口 还 是 其 它 子

对象

GetParent 获得 CWnd 的 父 窗 口 ( 如 果 有 )

GetSafeOwner 获 得 给 定 窗 口 的 安 全 拥 有 者

SetParent 改 变 父 窗 口

W indowFromPoint 标 明 包 含 给 定 点 的 窗 口

GetDlgItem 获 得 指 定 的 对 话 框 中 具 有 指 定 ID 的 控 件

GetDlgCtrlID 如果 CWnd 是 一 个 子 窗 口 , 则 用 这 个 函 数 来 返 回它的 ID 值

SetDlgCtrlID 为 窗 口 ( 可 以 是 任 意 子 窗 口 , 不 仅 是 对 话 框中 的 控 件 ) 设 置 窗 口 ID 或 控 件 ID

GetDescendant W indow 搜 索 所 有 子 窗 口 并 返 回 具 有 指 定 ID 的 窗 口GetParentFrame 获 得 CWnd 对 象 的 父 框 架 窗 口SendMessageToDescendants 将 消 息 发 送 给 窗 口 的 所 有 子 窗 口GetTopLevelParent 获 得 窗 口 的 顶 层 父 窗 口

GetTopLevelOwner 获 得 顶 层 窗 口

GetParentOwner 返 回 子 窗 口 的 父 窗 口 的 指 针

GetTopLevelFrame 获 得 窗 口 的 顶 层 框 架 窗 口

UpdateDialogControls 调 用 这 个 函 数 以 更 新 对 话 框 按 钮 和 其 它 控 件

的 状 态

UpdateData 初 始 化 对 话 框 或 获 得 对 话 框 中 的 数 据

CenterWindow 将 窗 口 设 置 到 父 窗 口 的 中 央

Update/Painting Functions

BeginPaint 为 绘 图 准 备 CWnd

EndPaint 标 志 着 绘 图 结 束

Print 在 指 定 的 设 备 环 境 中 画 出 当 前 窗 口

PrintClient 在 指 定 的 设 备 环 境 ( 通 常 是 打 印 机 设 备 环 境 ) 中 画 出 任 何 窗 口

LockWindowUpdate 禁 止 或 恢 复 在 给 定 窗 口 中 的 绘 图

UnlockWindowUpdate 解 锁 用 CWnd::LockWindowUpdate 锁 定 的 窗 口

GetDC 获 得 客 户 区 的 设 备 环 境

GetDCEx 获 得 客 户 区 的 显 示 设 备 环 境 , 允 许 在 绘 图 的 时候 进 行 剪 裁

RedrawWindow 更 新 客 户 区 中 的 指 定 矩 形 或 区 域

GetWindowDC 获 得 整 个 窗 口 的 显 示 环 境 , 包 括 标 题 条 、 菜 单和 滚 动 条

ReleaseDC 是 否 客 户 和 窗 口 设 备 环 境 , 使 其 它 应 用 程 序 能够 使 用 它 们

UpdateWindow 更 新 客 户 区

SetRedraw 使 CWnd 的 变 化 能 够 被 重 画 , 或 者 禁 止 重 画 发生 的 变 化

GetUpdateRect 获 得 完 全 封 闭 了 CWnd 中 更 新 区 域 的 最 小 矩 形的 坐 标

GetUpdateRgn 获 得 CWnd 的 更 新 区 域

Invalidate 使 整 个 客 户 区 无 效

InvalidateRect 在 当 前 的 更 新 区 域 中 加 入 给 定 的 矩 形 , 使 客 户区 的 给 定 矩 形 无 效

InvalidateRgn 在 当 前 的 更 新 区 域 中 加 入 给 定 的 区 域 , 使 客 户区 的 给 定 区 域 无 效

ValidateRect 在 当 前 的 更 新 区 域 中 删 除 给 定 的 矩 形 , 使 客 户区 的 给 定 矩 形 有 效

ValidateRgn 在 当 前 的 更 新 区 域 中 删 除 给 定 的 区 域 , 使 客 户区 的 给 定 区 域 有 效

ShowWindow 显 示 或 隐 藏 窗 口

Is W indowVisible 确 定 窗 口 是 否 可 见

ShowOwnedPopups 显 示 或 隐 藏 该 窗 口 拥 有 的 所 有 弹 出 窗 口

EnableScrollBar 允 许 或 禁 止 滚 动 条 的 一 个 或 两 个 箭 头

CoordinateMapping Functions

MapWindowPoints 将 一 些 坐 标 从 CWnd 的 坐 标 空 间 转 换 ( 映射 ) 到 其 它 窗 口 的 坐 标 空 间

ClientToScreen 将 给 定 点 或 显 示 器 上 矩 形 的 客 户 区 坐 标 转换 为 屏 幕 坐 标

ScreenToClient 将 给 定 点 或 显 示 器 上 矩 形 的 屏 幕 坐 标 转 换为 客 户 坐 标

Windo w Tex t Function s

SetWindowText 将 窗 口 的 文 本 或 标 题 文 字 ( 如 果 有 ) 设 为 指 定 的

文本

GetWindowText 返 回 窗 口 的 文 本 或 标 题 文 字 ( 如 果 有 )

GetWindowTextLength 返 回 窗 口 文 本 或 标 题 文 字 的 长 度

SetFont 设 置 当 前 字 体

GetFont 获 得 当 前 字 体

Scrollin g Function s

GetScrollPos 获 得 滚 动 块 的 当 前 位 置

GetScrollRange 复 制 指 定 滚 动 条 的 最 大 和 最 小 滚 动 条 位 置

ScrollWindow 滚 动 客 户 区 的 内 容

ScrollWindowEx 滚 动 客 户 区 的 内 容 , 与 ScrollWindow 类 似 , 还

有 其 它 功 能

GetScrollInfo 获得 SCROLLINFO 结 构 维 护 的 滚 动 条 信 息

GetScrollLimit 获 得 滚 动 条 的 限 制

SetScrollInfo 设 置 滚 动 条 信 息

SetScrollPos 设 置 滚 动 块 的 当 前 位 置 , 如 果 指 定 , 并 重 画 滚 动条 以 反 映 新 的 位 置

SetScrollRange 设 置 指 定 滚 动 条 的 最 小 和 最 大 位 置 值

ShowScrollBar 显 示 或 隐 藏 滚 动 条EnableScrollBarCtrl 允 许 或 禁 止 一 个 滚 动 条 控 件GetScrollBarCtrl 返 回 滚 动 条 控 件

RepositionBars 重 新 设 定 客 户 区 中 控 制 条 的 位 置

Drag-Drop Functions

DragAcceptFiles 指 明 该 窗 口 将 接 收 拖 来 的 文 件

Caret Functions

CreateCaret 为 系 统 插 字 符 创 建 一 个 新 的 形 状 并 获 得 它 的 所 有 权CreateSolidCaret 为 系 统 插 字 符 创 建 一 个 实 心 块 并 获 得 它 的 所 有 权CreateGrayCaret 为 系 统 插 字 符 创 建 一 个 灰 色 块 并 获 得 它 的 所 有 权GetCaretPos 获 得 插 字 符 当 前 位 置 的 客 户 区 坐 标

SetCaretPos 将 插 字 符 移 动 到 指 定 的 位 置

HideCaret 通 过 将 插 字 符 移 出 显 示 屏 幕 而 隐 藏 它

ShowCaret 在 插 字 符 的 当 前 位 置 显 示 插 字 符 。 一 旦 被 显 示 , 插

字 符 就 会 自 动 闪 烁

Dialog-BoxIte m Function s CheckDlgButton 在 按 钮 控 件 旁 放 置 或 者 清 除 检 查 标 记CheckRadioButton 选 中 指 定 的 单 项 按 钮 并 清 除 指 定 的 按 钮 组 中 其

它 所 有 单 项 按 钮 的 检 查 标 记

GetCheckedRadioButton 返 回 一 组 按 钮 中 当 前 选 中 的 单 项 按 钮 的 ID DlgDirList 用 文 件 或 目 录 列 表 填 充 一 个 列 表 框DlgDirListComboBox 用 文 件 或 目 录 列 表 填 充 一 个 组 合 框 中 的 列 表 框DlgDirSelect 获 得 列 表 框 的 当 前 选 择DlgDirSelectComboBox 获 得 组 合 框 中 列 表 框 的 当 前 选 择

续 表

GetDlgItemInt 将 给 定 对 话 框 中 控 件 的 文 本 转 换 为 整 数

GetDlgItemText 获 得 与 控 件 相 关 的 标 题 或 文 本

GetNextDlgGroupItem 在 一 组 控 件 内 搜 索 下 一 个 ( 或 上 一 个 ) 控 件

GetNextDlgTabItem 获 得 指 定 的 控 件 之 后 ( 或 之 前 ) 具 有

WS_TABSTOP 风 格 的 第 一 个 控 件

IsDlgButtonChecked 确 定 按 钮 控 件 是 否 有 检 查 标 记

IsDialogMessage 确 定 给 定 的 消 息 是 否 是 送 往 无 模 式 对 话 框 的 ,

如 果 是 , 则 处 理 它

SendDlgItemMessage 向 指 定 的 控 件 发 送 一 条 消 息

SetDlgItemInt 将 控 件 的 文 本 设 为 代 表 一 个 整 数 的 字 符 串

SetDlgItemText 设 置 指 定 的 对 话 框 中 的 控 件 的 标 题 或 文 本

SubclassDlgItem 将 一 个 W indows 控 件 与 CWnd 对 象 连 接 , 然

后 使 它 通 过 CWnd 的 消 息 映 射 转 发 消 息

ExecuteDlgInit 初 始 化 对 话 框 资 源

RunModalLoop 获 得 、 转 换 或 分 派 来 自 模 式 窗 口 的 消 息

ContinueModal 继 续 一 个 窗 口 的 模 式 状 态

EndModalLoop 结 束 一 个 窗 口 的 模 式 状 态

Data-Binding Functions

BindDefaultProperty 像 类 型 库 中 标 记 的 那 样 , 将 调 用 对 象 的 缺 省 的

简 单 移 动 属 性 和 与 数 据 源 控 件 相 关 的 游 标 绑 定在 一 起

BindProperty 将 一 个 游 标 移 动 属 性 与 数 据 移 动 控 件 绑 定 在 一起 , 然 后 在 MFC 的 绑 定 管 理 器 中 注 册 这 种 联系

GetDSCCursor 获 得 游 标 的 指 针 , 该 游 标 是 通 过 数 据 源 控 件 的DataSource 、 UserNam e 、 Password 和 SQL 属性 定 义 的

Menu Functions

GetMenu 获 得 指 定 菜 单 的 指 针

SetMenu 将 菜 单 设 为 指 定 的 菜 单

DrawMenuBar 重 画 菜 单 条

GetSystemMenu 允 许 应 用 程 序 访 问 控 制 菜 单 , 用 于 拷 贝 和 修 改

Hilite M enuItem 加 亮 显 示 一 个 顶 层 ( 菜 单 条 ) 菜 单 项 , 或 者 取 消 加 亮 显示

ToolTi p Function s

EnableToolTips 允 许 工 具 提 示 控 件

CancelToolTips 禁 止 工 具 提 示 控 件

续 表

FilterToolTipMessage 获 得 与 对 话 框 中 控 件 相 关 的 标 题 和 文 本

OnToolHitTest 确 定 一 个 点 是 否 位 于 指 定 工 具 的 边 界 矩 形 之 中 并 获

得 工 具 的 信 息

T im e r Function s

SetTimer 安 装 一 个 系 统 定 时 器 , 当 它 被 激 活 时 , 发 送 一 个

WM_TIMER 消 息

KillTimer 销 毁 一 个 系 统 定 时 器

Aler t Function s

FlashWindow 使 窗 口 闪 烁 一 次

MessageBox 创 建 并 显 示 一 个 窗 口 , 其 中 包 含 了 应 用 程 序 提 供 的 消 息和 标 题

WindowMessag e Function s

GetCurrentMessage 返 回 这 个 窗 口 当 前 处 理 的 消 息 的 指 针 。 只 应

该 在 OnMessage 消 息 处 理 函 数 内 部 调 用

Default 调 用 缺 省 的 窗 口 过 程 , 它 提 供 了 对 应 用 程 序没 有 处 理 的 任 何 窗 口 消 息 的 缺 省 处 理

PreTranslateMessage 在 消 息 被 发 送 到 W indows 函 数

TranslateMessage 和 DispatchMessage

续表之 前 , CWinApp 使 用 这 个 函 数 来 过 滤 窗 口 消息

SendMessage 向 CWnd 对 象 发 送 一 个 消 息 , 直 到 这 条 消 息被 处 理 之 后 才 返 回

PostMessage 将 一 条 消 息 放 入 应 用 程 序 的 消 息 队 列 , 然 后不 等 窗 口 处 理 这 条 消 息 直 接 返 回

SendNotifyMessage 将 一 条 消 息 发 送 到 窗 口 并 尽 快 返 回 , 返 回 的

速 度 取 决 于 该 窗 口 是 否 是 由 调 用 线 程 所 创 建

Clipboard Functions

ChangeClipboardChain 将 CWnd 从 剪 贴 板 观 察 器 的 链 中 清 除

SetClipboardViewer 将 CWnd 加 入 一 个 窗 口 链 , 每 当 剪 贴 板 的 内

容 发 生 变 化 时 , 就 会 通 知 这 些 窗 口

OpenClipboard 打 开 剪 贴 板 。 其 它 应 用 程 序 将 不 能 修 改 剪 贴板 , 直 到 调 用 W indows 的 CloseClipboard 函数

GetClipboardOwner 获 得 指 向 剪 贴 板 的 当 前 拥 有 者 的 指 针GetOpenClipboardWindow 获 得 当 前 打 开 剪 贴 板 的 窗 口 的 指 针GetClipboardViewer 获 得 剪 贴 板 观 察 器 链 中 的 第 一 个 窗 口 的 指 针

SetProperty 设 置 OLE 控 件 的 属 性

OnAmbientProperty 实 现 周 围 属 性 值GetControlUnknown 获 得 指 向 未 知 OLE 控 件 的 指 针GetProperty 获 得 OLE 控 件 的 属 性

InvokeHelper 激 活 OLE 控 件 的 方 法 或 属 性

Overridables

W indowProc 为 CWnd 对 象 提 供 了 窗 口 过 程 。 缺 省 的 窗 口 过 程 通

过 消 息 映 射 分 派 消 息

DefWindowProc 调 用 缺 省 的 窗 口 过 程 , 它 提 供 了 对 应 用 程 序 没 有 处理 的 任 何 窗 口 消 息 的 缺 省 处 理

PostNcDestroy 这 个 虚 拟 函 数 在 窗 口 被 销 毁 以 后 被 缺 省 的

OnNcDestroy 函 数 所 调 用

OnNotify 框 架 调 用 这 个 函 数 以 通 知 父 窗 口 , 在 它 的 一 个 控 件

发 生 了 一 个 事 件 , 或 该 控 件 需 要 消 息

OnChildNotify 父 窗 口 调 用 这 个 函 数 , 给 被 通 知 的 控 件 一 个 响 应 控

件 通 知 消 息 的 机 会

DoDataExchange 用 于 对 话 框 数 据 交 换 和 校 验 。 由 UpdateData 调 用

OnInitMenu 当 菜 单 要 被 激 活 时 调 用 这 个 函 数

OnInitMenuPopup 当 弹 出 菜 单 要 被 激 活 时 调 用 这 个 函 数

System Message Handlers

OnSysChar 当 一 次 击 键 被 转 换 为 系 统 字 符 消 息 时 调 用 这个 函 数

OnSysCommand 当 用 户 从 控 制 菜 单 中 选 择 命 令 , 或 者 当 用 户

选 择 了 最 大 化 或 最 小 化 按 钮 时 , 调 用 这 个 函数

OnSysDeadChar 当 一 次 击 键 被 转 换 为 系 统 死 键 ( 例 如 重 音 字

符 ) 消 息 时 调 用 这 个 函 数

OnSysKeyDown 当 用 户 按 住 ALT 键 并 按 下 其 它 键 时 调 用 这 个

函 数

OnSysKeyUp 当 用 户 放 开 一 个 键 , 而 此 时 ALT 键 被 按 下 , 则 调 用 这 个 函 数

OnCompacting 当 W indows 检 测 到 系 统 内 存 很 少 时 , 就 调 用这 个 函 数

OnDevModeChange 当 用 户 改 变 了 设 备 模 式 设 置 时 , 就 为 顶 层 窗口 调 用 这 个 函 数

OnFontChange 当 字 体 资 源 池 发 生 变 化 时 调 用 这 个 函 数

续表

OnPaletteIsChanging 当 应 用 程 序 将 要 实 现 其 逻 辑 调 色 板 时 通 知 其

它 应 用 程 序

OnPaletteChanged 调 用 这 个 函 数 时 使 用 调 色 板 的 所 有 窗 口 能 够

实 现 它 们 的 逻 辑 调 色 板 并 更 新 它 们 的 客 户 区

OnSysColorChange 当 系 统 颜 色 设 置 发 生 改 变 时 为 所 有 的 顶 层 窗口 调 用 这 个 函 数

OnWindowPosChanging 由 于 调 用 了 SetWindowPos 函 数 或 其 它 的 窗 口

管 理 函 数 , 因 而 窗 口 的 大 小 、 位 置 和 次 序 将要 发 生 变 化 时 , 就 调 用 这 个 函 数

OnWindowPosChanged 由 于 调 用 了 SetWindowPos 函 数 或 其 它 的 窗 口

管 理 函 数 , 因 而 当 窗 口 的 大 小 、 位 置 和 次 序发 生 了 变 化 时 , 就 调 用 这 个 函 数

OnDropFiles 当 用 户 在 注 册 为 可 以 接 收 拖 放 文 件 的 窗 口 上方 释 放 鼠 标 左 键 时 , 这 个 函 数 就 被 调 用

OnSpoolerStatus 每 当 一 个 作 业 被 加 入 或 移 出 打 印 管 理 器 的 队

列 时 , 打 印 管 理 器 就 调 用 这 个 函 数

OnTimeChange 在 系 统 时 间 改 变 之 后 , 为 所 有 的 顶 层 窗 口 调用 这 个 函 数

OnWinIniChange 在 W indows 的 初 始 化 文 件 W IN.INI 改 变 之 后

为 所 有 的 顶 层 窗 口 调 用 这 个 函 数

General Message Handlers

OnCommand 当 用 户 选 择 了 一 个 命 令 时 调 用 这 个 函 数

OnActivate 当 CWnd 要 被 激 活 或 退 出 激 活 状 态 时 调 用 这个 函 数

OnActivateApp 当 应 用 程 序 要 被 激 活 或 退 出 激 活 状 态 时 调 用这 个 函 数

General Message Handlers

OnCancelMode 调 用 这 个 函 数 以 允 许 CWnd 取 消 任 何 内 部 模式 , 比 如 鼠 标 捕 获 状 态

OnChildActivate 当 CWnd 的 大 小 和 位 置 发 生 变 化 或 者 CWnd 被 激 活 时 , 就 为 多 文 档 界 面 ( M D I ) 的 子 窗口 调 用 这 个 函 数

OnClose 调 用 这 个 函 数 , 作 为 关 闭 CWnd 的 信 号

OnCopyData 从 一 个 应 用 程 序 复 制 数 据 到 另 一 个 应 用 程 序

OnCreate 作 为 窗 口 创 建 过 程 的 一 部 分 来 调 用

OnCtlColor 如 果 CWnd 是 一 个 控 件 的 父 窗 口 , 当 控 件 要被 重 画 时 就 调 用 这 个 函 数

OnDestroy 当 CWnd 要 被 销 毁 时 就 调 用 这 个 函 数

OnEnable 当 CWnd 被 允 许 或 禁 止 时 调 用 这 个 函 数

OnEndSession 当 会 话 将 要 结 束 时 调 用 这 个 函 数

OnEnterIdle 调 用 这 个 函 数 以 通 知 应 用 程 序 的 主 窗 口 过程 , 模 式 对 话 框 或 菜 单 正 在 进 入 空 闲 状 态

OnEraseBkgnd 当 需 要 擦 除 窗 口 的 背 景 时 调 用 这 个 函 数

OnGetMinMaxInfo 每 当 W indows 需 要 知 道 最 大 化 的 位 置 和 大

小 , 或 者 最 小 或 最 大 跟 踪 尺 寸 时 , 就 调 用 这个 函 数

OnIconEraseBkgnd 当 CWnd 被 最 小 化 ( 图 标 化 ) , 并 且 在 画 出

图 标 之 前 , 必 须 填 充 图 标 的 背 景 时 调 用 这 个函 数

OnKillFocus 当 CWnd 失 去 输 入 焦 点 时 立 即 调 用 这 个 函 数

OnMenuChar 当 用 户 按 下 一 个 菜 单 助 记 字 符 , 但 是 不 能 与当 前 菜 单 中 任 何 预 定 义 的 助 记 符 相 匹 配 时 , 就 调 用 这 个 函 数

OnMenuSelect 当 用 户 选 择 了 一 个 菜 单 项 时 就 调 用 这 个 函 数

OnMove 当 CWnd 的 位 置 发 生 变 化 时 调 用 这 个 函 数

OnMoving 指 明 用 户 正 在 移 动 CWnd 对象

OnDeviceChange 通 知 应 用 程 序 或 设 备 驱 动 程 序 , 设 备 或 计 算

机 的 硬 件 配 置 发 生 了 变 化

OnStyleChanged 指 明 W indows 的 ::Set W indowLong 函 数 已 经改 变 了 一 个 或 多 个 窗 口 风 格

OnStyleChanging 指 明 W indows 的 ::Set W indowLong 函 数 将 要

改 变 一 个 或 多 个 窗 口 风 格

OnPaint 调 用 这 个 函 数 以 重 画 窗 口 的 一 部 分

OnParentNotify 当 创 建 或 销 毁 一 个 子 窗 口 , 或 者 当 用 户 在 子窗 口 上 方 点 击 了 鼠 标 键 时 调 用 这 个 函 数

OnQueryDragIcon 当 一 个 最 小 化 ( 图 标 化 ) 的 CWnd 要 被 用 户

拖 拉 时 就 调 用 这 个 函 数

OnQueryEndSession 当 用 户 选 择 结 束 W indows 会 话 时 就 调 用 这 个

函 数

OnQueryNewPalette 通 知 CWnd 它 将 接 收 输 入 焦 点

OnQueryOpen 当 CWnd 是 一 个 图 标 并 且 用 户 请 求 打 开 这 个图 标 时 就 调 用 这 个 函 数

General Message Handlers

OnSetFocus 当 CWnd 获 得 输 入 焦 点 时 调 用 这 个 函 数

OnShowWindow 当 CWnd 被 隐 藏 或 显 示 时 调 用 这 个 函 数

OnSize 当 CWnd 的 大 小 被 改 变 以 后 调 用 这 个 函 数

OnSizing 指 明 用 户 正 在 改 变 矩 形 的 大 小

OnStyleChanged 指 明 窗 口 的 一 个 或 多 个 风 格 已 经 被 改 变

OnStyleChanging 指 明 窗 口 的 一 个 或 多 个 风 格 将 被 改 变

Control Message Handlers

OnCharToItem 这 个 函 数 被 具 有

LBS_WANTKEYBOARDINPUT 风 格 的 子 列

表 框 调 用 , 用 以 响 应 W M _ C H A R 消 息

OnCompareItem 调 用 这 个 函 数 以 确 定 排 序 的 自 画 组 合 框 或 列表 框 中 新 项 的 相 对 位 置

OnDeleteItem 当 一 个 自 画 子 列 表 框 或 组 合 框 中 将 被 销 毁时 , 或 者 从 控 件 中 删 除 项 时 调 用 这 个 函 数

OnDrawItem 当 自 画 子 按 钮 控 件 、 组 合 框 控 件 、 列 表 框 控件 或 菜 单 的 可 视 部 分 需 要 被 画 出 时 调 用 这 个函数

OnDSCNotify 在 响 应 数 据 源 控 件 引 发 的 事 件 时 调 用 , 该 事件 是 当 与 数 据 源 控 件 绑 定 的 控 件 修 改 或 将 要修 改 游 标 时 产 生 的

OnGetDlgCode 为 控 件 调 用 这 个 函 数 , 使 控 件 能 够 自 己 处 理输 入 的 箭 头 键 和 TAB 键

OnMeasureItem 当 控 件 被 创 建 时 为 自 画 子 组 合 框 , 列 表 框 或菜 单 项 调 用 这 个 函 数 。 CWnd 通 知 W indows 该 控 件 的 大 小

SendChildNotifyLastMsg 提 供 了 从 父 窗 口 到 子 窗 口 的 通 知 消 息 , 使 子

窗 口 能 够 处 理 一 个 任 务

ReflectChildNotify 将 消 息 向 它 的 来 源 反 映 的 帮 助 函 数

OnWndMsg 指 明 一 个 窗 口 消 息 是 否 已 被 处 理

ReflectLastMsg 将 上 一 个 消 息 反 映 到 子 窗 口

OnVKeyToItem 由 CWnd 所 拥 有 的 列 表 框 调 用 , 用 于 响 应

W M _ K E Y D O W N 消 息

Input M essage Handlers

OnChar 当 一 次 击 键 被 转 换 为 非 系 统 字 符 时 调 用 这 个 函数

OnDeadChar 当 一 次 击 键 被 转 换 为 非 系 统 死 键 ( 例 如 重 音 字符 ) 时 调 用 这 个 函 数

OnHScroll 当 用 户 点 击 了 CWnd 的 水 平 滚 动 条 时 调 用 这 个函 数

OnKeyDown 当 按 下 了 一 个 非 系 统 键 时 调 用 这 个 函 数

OnKeyUp 当 放 开 一 个 非 系 统 键 时 调 用 这 个 函 数

OnLButtonDblClk 当 用 户 双 击 鼠 标 左 键 时 调 用 这 个 函 数

Inpu t M essag e Handler s OnLButtonDown 当 用 户 按 下 鼠 标 左 键 时 调 用 这 个 函 数 OnLButtonUp 当 用 户 放 开 鼠 标 左 键 时 调 用 这 个 函 数OnMButtonDblClk 当 用 户 双 击 鼠 标 中 键 时 调 用 这 个 函 数OnMButtonDown 当 用 户 按 下 鼠 标 中 键 时 调 用 这 个 函 数

OnMButtonUp 当 用 户 放 开 鼠 标 中 键 时 调 用 这 个 函 数

OnMouseActivate 当 鼠 标 位 于 非 活 动 窗 口 , 并 且 用 户 按 下 鼠 标 键

时 调 用 这 个 函 数

OnMouseMove 当 鼠 标 光 标 移 动 时 调 用 这 个 函 数

OnMouseWheel 当 用 户 旋 转 鼠 标 轮 时 调 用 这 个 函 数 。 使 用

W indowsNT4.0 的 消 息 处 理

OnRegisteredMouseWheel 当 用 户 旋 转 鼠 标 轮 的 时 候 调 用 这 个 函 数 。 使 用

W indows 95 和 W indows NT 3.51 的 消 息 处 理OnRButtonDblClk 当 用 户 双 击 鼠 标 右 键 时 调 用 这 个 函 数OnRButtonDown 当 用 户 按 下 鼠 标 右 键 时 调 用 这 个 函 数OnRButtonUp 当 用 户 放 开 鼠 标 右 键 时 调 用 这 个 函 数

OnSetCursor 如 果 没 有 捕 获 鼠 标 输 入 并 且 鼠 标 导 致 光 标 在 窗口 内 移 动 时 , 就 调 用 这 个 函 数

OnTimer 当 达 到 SetTimer 指 定 的 时 间 间 隔 时 调 用 这 个 函数

OnVScroll 当 用 户 点 击 窗 口 的 垂 直 滚 动 条 时 调 用 这 个 函 数

OnCaptureChanged 向 失 去 鼠 标 捕 获 的 窗 口 发 送 一 条 消 息

Nonclient-Are a Messag e Handler s

OnNcActivate 当 需 要 改 变 非 客 户 区 以 指 明 活 动 或 非活 动 状 态 时 调 用 这 个 函 数

续 表

OnNcCalcSize 当 需 要 计 算 非 客 户 区 的 大 小 和 位 置 时调 用 这 个 函 数

OnNcCreate 在 OnCreate 之 前 , 当 要 创 建 非 客 户 区时 调 用 这 个 函 数

OnNcDestroy 当 非 客 户 区 要 被 销 毁 的 时 候 调 用 这 个函 数

OnNcHitTest 如 果 CWnd 中 包 含 了 光 标 , 或 者 用SetCapture 捕 获 了 鼠 标 输 入 时 , 每 当 鼠标 移 动 时 , W indows 调 用 这 个 函 数

OnNcLButtonDblClk 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户双 击 鼠 标 左 键 时 , 就 调 用 这 个 函 数

OnNcLButtonDown 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户按 下 鼠 标 左 键 时 , 就 调 用 这 个 函 数

OnNcLButtonUp 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户放 开 鼠 标 左 键 时 , 就 调 用 这 个 函 数

OnNcMButtonDblClk 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户双 击 鼠 标 中 键 时 , 就 调 用 这 个 函 数

OnNcMButtonDown 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户按 下 鼠 标 中 键 时 , 就 调 用 这 个 函 数

OnNcMButtonUp 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户放 开 鼠 标 中 键 时 , 就 调 用 这 个 函 数

Nonclient-Area Message Handlers

OnNcMouseMove 当 光 标 在 CWnd 的 非 客 户 区 中 移 动 时就 调 用 这 个 函 数

OnNcPaint 当 非 客 户 区 需 要 重 画 时 调 用 这 个 函 数

OnNcRButtonDblClk 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户双 击 鼠 标 右 键 时 , 就 调 用 这 个 函 数

OnNcRButtonDown 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户按 下 鼠 标 右 键 时 , 就 调 用 这 个 函 数

OnNcRButtonUp 当 光 标 位 于 CWnd 的 非 客 户 区 , 用 户放 开 鼠 标 右 键 时 , 就 调 用 这 个 函 数

M D I Message Handlers

OnMDIActivate 当 MDI 子 窗 口 被 激 活 或 失 去 活 动 状 态 时 调 用 这 个

函 数

Clipboard Message Handlers

OnAskCbFormatName 当 剪 贴 板 的 拥 有 者 将 显 示 剪 贴 板 内 容 时 ,

剪 贴 板 观 察 程 序 就 调 用 这 个 函 数

OnChangeCbChain 通 知 指 定 的 窗 口 将 从 链 中 删 除

OnDestroyClipboard 当 通 过 W indows 的 EmptyClipboard 函 数 清

空 剪 贴 板 时 调 用 这 个 函 数

OnDrawClipboard 当 内 容 变 化 时 调 用 这 个 函 数

续 表

OnHScrollClipboard

当 剪 贴 板 的 拥 有

使 适 当 的 部 分 无

候 调 用 这 个 函 数

OnPaintClipboard

当 剪 贴 板 观 察 器

调 用 这 个 函 数

OnRenderAllFormats

当 拥 有 者 应 用 程

的 所 有 格 式 时 调 用 这 个 函 数

OnRenderFormat 当 一 种 延 迟 提 交 的 格 式 需 要 被 提 交 时 为 剪贴 板 拥 有 者 调 用 这 个 函 数

OnSizeClipboard 当 剪 贴 板 观 察 器 窗 口 的 客 户 区 大 小 发 生 变化 时 调 用 这 个 函 数

OnVScrollClipboard 当 拥 有 者 要 滚 动 剪 贴 板 的 图 像 、 使 适 当 的

部 分 无 效 以 及 更 新 滚 动 条 值 的 时 候 调 用 这个 函 数

Menu Loop Notification

OnEnterMenuLoop 进 入 一 个 菜 单 模 式 的 循 环 时 调 用 该 函 数

OnExitMenuLoop 当 退 出 一 个 菜 单 模 式 的 循 环 时 调 用 该 函 数

成 员 函 数

CWnd::ArrangeIconic W indows

UINT ArrangeIconicWindows( );

返 回 值

如 果 这 个 函 数 执 行 成 功 , 则 返 回 一 行 图 标 的 高 度 ; 否 则 返 回 0 。

说 明

排 列 所 有 最 小 化 ( 图 标 化 ) 的 子 窗 口 。

这 个 成 员 函 数 还 排 列 桌 面 窗 口 中 的 图 标 , 这 些 图 标 覆 盖 了 整 个 屏 幕 。

GetDesktop W indow 成 员 函 数 可 以 返 回 桌 面 窗 口 对 象 的 图 标 。

如 果 要 排 列 MDI 客 户 窗 口 中 的 MDI 子 窗 口 , 则 调 用

CMDIFrameWnd::MDIIconArrange 。

请 参 阅 CWnd::GetDesktopWindow , C M D IFrameWnd::MDIIconArrange,

::A rrangeIconicWindows

CWnd::Attach

BOOL Attach( HWND hWndNew );

返 回 值

如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

hWndNew

指 定 了 W indows 窗 口 的 句 柄 。

说 明

将 一 个 W indows 窗 口 与 CWnd 对 象 相 连 接 。

请 参 阅 CWnd::Detach, CWnd::m_hWnd, CWnd::SubclassWindow

CWnd::BeginPaint

CDC* BeginPaint( LPPAINTSTRUCT lpPaint );

返 回 值

标 识 了 CWnd 的 设 备 环 境 。这 个 指 针 可 能 是 临 时 的 ,不 应 在 EndPaint 之 外 保 存 。

参 数

lpPaint

执行 PAINTSTRUCT 结 构 , 用 于 获 取 绘 图 信 息 。

说 明

为 绘 图 准 备 CWnd 并 用 与 绘 图 有 关 的 信 息 填 充 PAINTSTRUCT 数 据 结 构 。

绘 图 结 构 中 包 含 了 一 个 RECT 数 据 结 构 , 它 包 含 了 完 全 封 闭 更 新 区 域 的 最 小 矩形 以 及 一 个 标 志 , 指 明 背 景 是 否 需 要 擦 除 。

更 新 区 域 是 由 Invalidate 、 InvalidateRect 或 InvalidateRgn 成 员 函 数 设 置 的 , 并且 在 更 新 区 域 改 变 大 小 、 移 动 、 创 建 、 滚 动 或 执 行 其 它 会 影 响 客 户 区 的 操 作 后由 系 统 设 置 。 如 果 更 新 区 域 被 标 记 为 需 要 擦 除 , 则 BeginPaint 发 送 一 个WM_ONERASEBKGND 消 息 。

除 非 是 在 响 应 WM_PAINT 消 息 的 时 候 , 否 则 不 要 调 用 BeginPaint 成 员 函 数 。每 个 对 BeginPaint 成 员 函 数 的 调 用 都 必 须 有 对 应 的 对 EndPaint 成 员 函 数 的 调用 。 如 果 在 这 个 区 域 中 的 插 字 符 需 要 被 重 画 , 那 么 BeginPaint 成 员 函 数 自 动 隐

藏 插 字 符 以 免 被 擦 除 。

请 参 阅 CWnd::EndPaint, CWnd::Invalidate, CWnd::InvalidateRgn, ::BeginPaint, CPaintDC

CWnd::BindDefaultProperty

void BindDefaultProperty( DISPID dwDispID , VARTYPE vtProp , LPCTSTR

szFieldName , CWnd * pDSCWnd );

参 数

dwDispID

指 定 要 与 数 据 源 控 件 绑 定 的 数 据 绑 定 控 件 的 属 性 的 DISPID 。

vtProp

指 定 要 绑 定 的 属 性 的 类 型 – – – – 例 如 , V T _BSTR , VT_VARIANT 等 等 。

szFieldName

指 定 要 与 属 性 绑 定 的 字 段 的 名 字 , 位 于 数 据 源 控 件 提 供 的 游 标 中 。

pDSCWnd

指 向 拥 有 数 据 源 控 件 的 窗 口 , 属 性 将 与 该 窗 口 绑 定 。 利 用 DCS 的 宿 主 窗口 的 资 源 ID 调 用 GetDlgItem 以 获 取 这 个 指 针 。

说 明

如 类 型 库 中 标 记 的 那 样 将 调 用 对 象 缺 省 的 简 单 绑 定 属 性 ( 比 如 编 辑 控 件 ) 与 游标 绑 定 起 来 , 该 游 标 是 通 过 数 据 源 控 件 的 DataSource 、 UserNam e、 Password 和SQL 属 性 定 义 的 。 你 调 用 这 个 函 数 的 CWnd 对 象 必 须 是 一 个 数 据 绑 定 对 象 。BindDefaultProperty 必 须 在 下 面 的 上 下 文 中 使 用 :

BOOL CMyDlg::OnInitDialog()

{

...

CWnd* pDSC = GetDlgItem(IDC_REMOTEDATACONTROL);

CWnd* pList = GetDlgItem(IDC_DBLISTBOX); pList->BindDefaultProperty(0x2,

VT_BSTR, _T("CourseID"), pDSC);

CWnd* pEdit = GetDlgItem(IDC_MASKEDBOX); pEdit->BindDefaultProperty(0x16,

VT_BSTR, _T("InstuctorID"), pDSC);

...

return TRUE;

}

请 参 阅 CWnd::GetDSCCursor, CWnd::BindProperty

CWnd::BindProperty

void BindProperty( DISPID dwDispID , CWnd * pWndDSC );

参 数

dwDispID

指 定 了 要 与 数 据 源 控 件 绑 定 的 数 据 绑 定 控 件 的 属 性 的 D ISPID 。

pWndDSC

指 向 拥 有 数 据 源 控 件 的 窗 口 , 属 性 将 与 该 窗 口 绑 定 。 利 用 DCS 的 宿 主 窗口 的 资 源 ID 调 用 GetDlgItem 以 获 取 这 个 指 针 。

说 明

将 数 据 绑 定 控 件 ( 如 网 格 控 件 ) 的 游 标 绑 定 属 性 与 数 据 源 控 件 绑 定 起 来 , 并 且在 MFC 绑 定 管 理 器 中 注 册 这 种 联 系 。BindProperty 必 须 在 下 面 的 上 下 文 中 使 用 : BOOL CMyDlg::OnInitDialog()

{

...

CWnd* pDSC = GetDlgItem(IDC_REMOTEDATACONTROL);

CWnd* pList= GetDlgItem(IDC_DBLISTBOX); pList.BindProperty(0x9, pDSC);

...

return TRUE;

}

请 参 阅 CWnd::GetDSCCursor, CWnd::BindDefaultProperty

CWnd::BringWindowToTop

void BringWindowToTop( );

说 明

这 个 函 数 将 CWnd 放 到 重 叠 窗 口 堆 栈 的 顶 部 。 另 外 , BringWindowToTop 还 激活 弹 出 窗 口 、 顶 层 窗 口 以 及 M D I 子 窗 口 。 BringWindowToTop 成 员 函 数 应 当 被用 来 把 任 何 被 重 叠 窗 口 部 分 或 完 全 遮 住 的 窗 口 显 露 出 来 。

调 用 这 个 函 数 类 似 于 调 用 SetWindowPos 函 数 来 改 变 窗 口 在 Z 轴 方 向 上 的 位 置 。

BringWindowToTop 函 数 并 不 将 窗 口 的 风 格 改 变 为 桌 面 上 的 顶 层 窗 口 。

请 参 阅 ::BringWindowToTop

CWnd::CalcWindowRect

virtual void CalcWindowRect( LPRECT lpClientRect , UINT nAdjustType =

adjustBorder );

参 数

lpClientRect

指 向 一 个 RECT 结 构 或 CRect 对 象 , 其 中 包 含 了 窗 口 矩 形 的 值 。

nAdjustType

用 于 现 场 编 辑 的 枚 举 类 型 。 它 可 以 具 有 以 下 的 值 : CWnd::adjustBorder = 0 , 意 味 着 在 计 算 时 不 考 虑 滚 动 条 大 小 ; 或 者 CWnd::adjustBorder = 1 , 意 味 着 它 们 将 被 加 入 最 终 的 矩 形 大 小 。

说 明

调 用 这 个 成 员 函 数 以 根 据 所 需 的 客 户 矩 形 大 小 计 算 窗 口 矩 形 的 大 小 。 随 后 算 出的 窗 口 矩 形 ( 保 存 在 lpClientRec t) 中 可 以 被 传 递 到 Create 成 员 函 数 以 创 建 一个 窗 口 , 其 客 户 区 大 小 就 是 要 求 的 大 小 。

框 架 在 创 建 窗 口 之 前 确 定 窗 口 的 大 小 。

客 户 矩 形 是 完 全 封 闭 客 户 区 的 最 小 矩 形 。 窗 口 矩 形 是 完 全 封 闭 窗 口 的 最 小 矩形 。

请 参 阅 ::AdjustWindowRectEx

CWnd::CancelToolTips

static void PASCAL CancelToolTips( BOOL bKeys = FALSE );

参 数

bKeys

如 果 为 TRUE , 当 按 下 键 时 取 消 工 具 提 示 , 并 将 状 态 条 文 本 设 为 缺 省 值 ; 否 则 为 FALSE 。

说 明

如 果 当 前 显 示 了 工 具 提 示 , 则 调 用 这 个 函 数 以 从 屏 幕 上 清 除 工 具 提 示 。

注 意 : 这 个 成 员 函 数 对 你 的 代 码 管 理 的 工 具 提 示 不 起 作 用 。 它 只 影 响CWnd::Enable ToolTips 管 理 的 工 具 提 示 控 件 。

请 参 阅 EnableToolTips, TTM_ACTIVATE

CWnd::CenterWindow

void CenterWindow( CWnd* pAlternateOwner = NULL );

参 数

pAlternateOwner

指 向 一 个 窗 口 的 指 针 , 本 窗 口 将 被 定 位 到 该 窗 口 ( 而 不 是 其 它 的 父 窗 口 ) 的 中 央 。

说 明

这 个 函 数 将 一 个 窗 口 定 位 到 它 的 父 窗 口 的 中 央 。 通 常 在 CDialog::OnInitDialog 中 调 用 , 用 于 将 对 话 框 定 位 到 应 用 程 序 主 窗 口 的 中 央 。 在 缺 省 情 况 下 , 这 个 函数 将 子 窗 口 定 位 到 它 们 的 父 窗 口 的 中 央 , 而 将 弹 出 窗 口 定 位 到 拥 有 者 的 中 央 。如 果 弹 出 窗 口 没 有 拥 有 者 , 它 将 被 定 位 到 屏 幕 中 央 。 如 果 要 使 窗 口 根 据 不 是 父窗 口 也 不 是 拥 有 者 的 窗 口 来 定 位 , 则 可 以 将 pAlternateOwner 参 数 可 以 被 设 为一 个 有 效 的 窗 口 。 如 果 要 强 迫 相 对 于 屏 幕 定 位 , 则 应 在 pAlternateOwner 参 数中 传 递 CWnd::GetDesktopWindow 返 回 的 值 。

请 参 阅 CWnd::GetDesktopWindow, CDialog::OnInitDialog

CWnd::ChangeClipboardChain

BOOL ChangeClipboardChain( HWND hWndNext );

返 回 值

如 果 成 功 , 则 返 回 一 个 非 零 值 ; 否 则 返 回 0 。

参 数

hWndNext

标 识 了 剪 贴 板 观 察 器 链 中 跟 在 CWnd 后 面 的 窗 口 。

说 明

从 剪 贴 板 观 察 器 的 链 中 移 去 CWnd , 并 且 使 hWndNext 指 定 的 窗 口 称 为 链 中

CWnd 的 后 继 者 。

请 参 阅 CWnd::SetClipboardViewer, ::ChangeClipboardChain

CWnd::CheckDlgButton

void CheckDlgButton( int nIDButton, UINT nCheck );

参 数

nIDButton

指 定 要 修 改 的 按 钮 。

nCheck

指 定 了 要 执 行 的 动 作 。 如 果 nCheck 为 非 零 值 , 则 CheckDlgButton 成 员函 数 将 一 个 检 查 标 记 放 在 按 钮 旁 边 ; 如 果 为 0 , 则 清 除 检 查 标 记 。 对 于三 态 按 钮 , 如 果 nCheck 为 2 , 则 按 钮 的 状 态 不 确 定 。

说 明

选 择 ( 置 检 查 标 记 ) 或 清 除 ( 清 除 检 查 标 记 ) 一 个 按 钮 , 或 者 改 变 三 态 按 钮 的状 态 。

CheckDlgButton 函 数 向 指 定 的 按 钮 发 送 一 条 BM_SETCHECK 消 息 。

请 参 阅 CWnd::IsDlgButtonChecked, CButton::SetCheck, ::CheckDlgButton

CWnd::CheckRadioButton

void CheckRadioButton( int nIDFirstButton , int nIDLastButton , int

nIDCheckButton );

参 数

nIDFirstButton

指 定 组 中 第 一 个 单 选 按 钮 的 整 数 标 识 符 。

nIDLastButton

指 定 组 中 最 后 一 个 单 选 按 钮 的 整 数 标 识 符 。

nIDCheckButton

指 定 了 要 选 中 的 单 选 按 钮 的 整 数 标 识 符 。

说 明

从 一 组 按 钮 中 选 择 ( 加 入 检 查 标 记 ) 一 个 单 选 按 钮 并 清 除 ( 清 除 检 查 标 记 ) 同组 中 其 它 单 选 按 钮 。

CheckRadioButton 函 数 向 指 定 的 单 选 按 钮 发 送 一 条 BM_SETCHECK 消 息 。

请 参 阅 CWnd::GetCheckedRadioButton, CButton::SetCheck, ::CheckRadioButton

CWnd::Child W indowFromPoint

CWnd* ChildWindowFromPoint( POINT point ) const;

CWnd* ChildWindowFromPoint( POINT poin t, UINT nFlags ) const;

返 回 值

标 识 了 包 含 指 定 点 的 子 窗 口 。 如 果 给 定 的 点 位 于 客 户 区 之 外 , 则 返 回 NULL 。如 果 给 定 点 位 于 客 户 区 之 内 , 但 是 不 在 任 何 子 窗 口 之 内 , 则 返 回 CWnd 。

此 成 员 函 数 将 返 回 包 含 了 指 定 点 的 被 隐 藏 或 禁 止 的 子 窗 口 。

可 能 有 多 于 一 个 子 窗 口 包 含 了 给 定 的 点 。 但 是 , 这 个 函 数 仅 返 回 包 含 该 点 的 第一 个 窗 口 的 CWnd* 指 针 。

返 回 的 CWnd* 有 可 能 是 临 时 的 , 不 能 保 存 以 供 将 来 使 用 。

参 数

point nflags

指 定 了 要 被 测 试 的 点 的 客 户 区 坐 标 。

指 定 了 要 跳 过 哪 个 子 窗 口 。 这 个 参 数 可 以 是 如 下 值 的 组 合 :

值 含义

CWP_ALL 不 跳 过 任 何 子 窗 口

CWP_SKIPINVISIBLE 跳 过 不 可 见 的 子 窗 口

CWP_SKIPDISABLED 跳 过 被 禁 止 的 子 窗 口

CWP_SKIPTRANSPARENT 跳 过 透 明 的 子 窗 口

说 明

确 定 CWnd 的 哪 个 子 窗 口 包 含 了 指 定 的 点 。

请 参 阅 CWnd::WindowFromPoint, ::Child W indowFromPoint

void ClientToScreen( LPPOINT lpPoint ) const; void ClientToScreen( LPRECT lpRect ) const;

参 数

lpPoint

指 向 一 个 POINT 结 构 或 CPoint 对 象 , 其 中 包 含 了 要 转 换 的 客 户 区 坐 标 。

lpRect

指 向 一 个 RECT 结 构 或 CRect 对 象 , 其 中 包 含 了 要 转 换 的 客 户 区 坐 标 。

说 明

将 显 示 器 上 给 定 点 或 矩 形 的 客 户 区 坐 标 转 换 为 屏 幕 坐 标 。 ClientToScreen 成 员函 数 使 用 lpPoint 或 lpRect 指 向 的 POINT 或 RECT 结 构 或 者 CPoint 或 CRect 对象 的 客 户 区 坐 标 来 计 算 新 的 屏 幕 坐 标 , 然 后 它 将 结 构 中 的 坐 标 替 换 为 新 坐 标 。新 的 屏 幕 坐 标 是 相 对 于 系 统 显 示 器 的 左 上 角 的 。

ClientToScreen 成 员 函 数 假 定 给 定 的 点 或 矩 形 使 用 的 是 客 户 区 坐 标 。

请 参 阅 CWnd::ScreenToClient, ::ClientToScreen

BOOL ContinueModal( );

返 回 值

如 果 要 继 续 模 式 循 环 , 则 返 回 非 零 值 ; 如 果 调 用 了 EndModalLoop , 则 返 回 0 。

说 明

这 个 成 员 是 由 RunModalLoop 调 用 的 , 用 于 确 定 何 时 退 出 模 式 状 态 。 在 缺 省 情况 下 , 它 返 回 一 个 非 零 值 , 直 到 调 用 了 EndModalLoop 。

请 参 阅 RunModalLoop, EndModalLoop

CWnd::Create

virtual BOOL Create( LPCTSTR lpszClassNam e, LPCTSTR lpszWindowNam e, D W O R D dwStyle , const RECT& rect , CWnd* pParentWnd , UINT nID , CCreateContext* pContext = NULL);

返 回 值

如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpszClassName

指 向 一 个 以 null 结 尾 的 字 符 串 , 它 命 名 了 一 个 W indows 的 窗 口 类 ( 一 个WNDCLASS 结 构 ) 。 类 名 可 以 是 用 全 局 函 数 AfxRegisterWndClass 注 册的 任 何 名 字 , 也 可 以 是 任 何 预 定 义 的 控 制 类 名 。 如 果 该 参 数 为 NULL , 则 使 用 缺 省 的 CWnd 属 性 。

lpszWindowName

指 向 一 个 null 结 尾 的 字 符 串 , 其 中 包 含 了 窗 口 名 。

dwStyle

指 定 了 窗 口 风 格 属 性 。 不 能 使 用 WS_POPU P 。 如 果 你 想 要 创 建 一 个 弹 出窗 口 , 则 应 使 用 CWnd::CreateEx。

rect

窗 口 的 位 置 和 大 小 , 使 用 pParentWnd 的 客 户 区 坐 标 。

pParentWnd

父 窗 口 。

nID

子 窗 口 的 ID 。

pContext

窗 口 的 创 建 上 下 文 。

说 明

创 建 一 个 W indows 的 子 窗 口 , 并 将 它 连 接 到 CWnd 对 象 上 。

你 可 以 经 过 两 步 构 造 一 个 子 窗 口 。 首 先 , 调 用 构 造 函 数 , 创 建 一 个 CWnd 对 象 。然 后 调 用 Create , 创 建 一 个 W indows 的 子 窗 口 , 并 将 它 连 接 到 CWnd 。 Create 函 数 初 始 化 窗 口 的 类 名 、 窗 口 名 , 并 为 它 的 风 格 、 父 窗 口 和 ID 注 册 值 。

请 参 阅 CWnd::CWnd, CWnd::CreateEx

CWnd::CreateCaret

void CreateCaret( CBitmap* pBitmap );

参 数

pBitmap

标 识 了 一 个 位 图 , 定 义 了 插 入 字 符 的 形 状 。

说 明

为 系 统 插 入 字 符 创 建 一 个 新 的 形 状 , 并 声 明 对 插 入 字 符 的 所 有 权 。

这 个 位 图 必 须 是 先 前 用 CBitmap::CreateBitmap 成 员 函 数 、 W indows 的

CreateDIBitmap 函 数 或 CBitmap::LoadBitmap 成 员 函 数 创 建 的 。

CreateCaret 自 动 销 毁 原 来 的 插 字 符 形 状 , 并 不 考 虑 哪 个 窗 口 拥 有 这 个 插 字 符 。在 被 创 建 之 后 , 插 字 符 最 初 是 隐 藏 的 。 要 显 示 插 字 符 , 必 须 调 用 ShowCaret 成员 函 数 。

系 统 插 字 符 是 一 种 共 享 资 源 。 CWnd 只 应 在 它 具 有 输 入 焦 点 或 者 活 动 的 时 候 才创 建 插 字 符 。 在 它 失 去 输 入 焦 点 或 变 为 非 活 动 之 前 , 它 应 该 销 毁 插 字 符 。

请 参 阅 CBitmap::CreateBitmap, ::CreateDIBitmap, ::DestroyCaret, CBitmap::LoadBitmap, CWnd::ShowCaret, ::CreateCaret

CWnd::CreateControl

BOOL CWnd::CreateControl( LPCTSTR lpszClass , LPCTSTR lpszWindowNam e, D W O R D dwStyle , const RECT& rect , CWnd* pParentWnd , UINT nID , CFile* pPersist = NULL, BOOL bStorage = FALSE, BSTR bstrLicKey = NULL );

BOOL CWnd::CreateControl( REFCLSID clsid , LPCTSTR lpszWindowNam e,

D W O R D dwStyle , const RECT& rect , CWnd* pParentWnd , UINT nID , CFile*

pPersist = NULL, BOOL bStorage = FALSE, BSTR bstrLicKey = NULL );

返 回 值

如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpszClass

这 个 字 符 串 可 能 包 含 了 该 类 的 OLE 的 “ 短 名 ” ( ProgID ) , 例 如 , “ CIRC3.Circ3Ctrl.1 ” 。 这 个 名 字 应 该 与 控 件 注 册 的 名 字 相 匹 配 。 或 者 , 这 个 字 符 串 可 能 包 含 了 CLSID 的 字 符 串 形 式 , 包 括 在 大 括 号 内 , 例 如 , “ {9DBAFCCF-592F-101B-85CE-00608CEC297B} ” 。 在 其 它 情 况 下 ,

CreateControl 将 该 字 符 串 转 换 为 对 应 的 类 ID 。

lpszWindowName

指 向 要 显 示 在 控 件 中 的 文 本 的 指 针 。 设 置 了 控 件 的 标 题 或 文 本 属 性 ( 如果 有 ) 的 值 。 如 果 该 指 针 为 NULL , 则 不 改 变 控 件 的 标 题 或 文 本 属 性 。

dwStyle

W indows 风 格 。 可 能 的 取 值 在 说 明 部 分 列 出 。

rect

指 定 了 控 件 的 大 小 和 位 置 。它 可 以 是 一 个 CRect 对 象 ,也 可 以 是 一 个 RECT

结 构 。

pParentWnd

指 定 了 控 件 的 父 窗 口 。 它 不 能 为 NULL 。

nID

指 定 了 控 件 的 ID 。

pPersist

指 向 一 个 CFile 对 象 的 指 针 , 其 中 包 含 了 控 件 的 永 久 状 态 。 缺 省 值 为NULL , 表 明 控 件 在 初 始 化 自 己 的 时 候 并 不 读 任 何 永 久 性 的 存 储 。 如 果该 参 数 不 是 NULL , 它 必 须 是 一 个 CFile 派 生 类 对 象 的 指 针 , 其 中 包 含了 控 件 的 永 久 数 据 , 可 以 是 流 的 形 式 , 也 可 以 是 存 储 的 形 式 。 这 些 数 据必 须 是 在 客 户 以 前 的 活 动 中 保 存 的 。 CFile 对 象 中 还 可 以 包 含 其 它 数 据 , 但 是 当 调 用 CreateControl 的 时 候 , 它 的 读 写 指 针 必 须 定 位 在 永 久 数 据 的第 一 个 字 节 。

bStorage

指明 pPersist 中 的 数 据 是 被 解 释 为 IStorage 数 据 还 是 IStream 数 据 。 如 果pPersist 中 的 数 据 是 一 种 存 储 , 则 bStorage 应 该 为 TRU E 。 如 果 pPersist 中 的 数 据 是 一 个 流 , 则 bStorage 应 该 是 FALSE 。 缺 省 值 为 FALSE 。

bstrLicKey

可 选 的 许 可 键 数 据 。 这 个 数 据 仅 在 创 建 需 要 运 行 时 许 可 的 控 件 时 才 需 要 。

clsid

如 果 该 控 件 支 持 许 可 , 要 成 功 地 创 建 控 件 , 你 必 须 提 供 许 可 键 。 缺 省 的值为 NULL 。

控 件 的 唯 一 的 类 ID 。

说 明

使 用 这 个 成 员 函 数 来 创 建 一 个 OLE 控 件 , 在 MFC 程 序 中 , 它 用 一 个 CWnd 对象 来 代 表 。 CreateControl 与 CWnd::Create 函 数 类 似 , CWnd::Create 为 CWnd 创建 一 个 窗 口 。 CreateControl 创 建 一 个 OLE 控 件 , 而 不 是 其 它 的 普 通 窗 口 。

CreateControl 仅 支 持 W indows 的 dwStyle 风 格 的 一 个 子 集 :

  • WS_VISIBLE 创 建 一 个 最 初 可 见 的 窗 口 。 如 果 你 希 望 该 控

    件 立 即 可 见 , 向 普 通 窗 口 一 样 , 则 需 要 这 个 风 格 。

  • WS_DISABLED 创 建 一 个 最 初 被 禁 止 的 窗 口 。 被 禁 止 的 窗

    口 不 能 接 收

用 户 的 输 入 。 如 果 控 件 具 有 Enable 属 性 , 则 可 以 设 置 这 个 风 格 。

  • WS_BORDER 创 建 一 个 带 有 细 边 框 的 窗 口 。 如 果 控 件 具 有

    BorderStyle

属 性 , 则 可 以 设 置 这 个 风 格 。

  • WS_GROUP 指 定 了 一 组 控 件 中 的 第 一 个 控 件 。 用 户 可 以

    在 组 中 使 用 方向 键 来 把 键 盘 焦 点 从 一 个 控 件 转 移 到 另 一 个 控 件 。 在 第 一 个 控 件 之 后 所 有用 WS_GROUP 风 格 定 义 的 控 件 都 属 于 同 一 组 。 下 一 个 具 有 WS_GROUP 风 格 的 控 件 将 结 束 这 个 组 并 开 始 一 个 新 组 。

  • WS_TABSTOP 指 明 当 用 户 按 下 TAB 键 时 , 控 件 可 以 接 收 键

    盘 焦 点 。按 下 TAB 键 时 键 盘 焦 点 转 移 到 具 有 W S_TABSTOP 风 格 的 下 一 个 控 件 。

CWnd::CreateEx

BOOL CreateEx( DWORD dwExStyle, LPCTSTR lpszClassName , LPCTSTR lpszWindowNam e, DWORD dwStyle , int x , int y , int nWidth , int nHeigh t, HWND hwndParent , HMENU nIDorHMenu , LPVOID lpParam = NULL );

BOOL CreateEx(DWORD dwExStyle , LPCTSTR lpszClassNam e, LPCTSTR lpszWindowNam e, DWORD dwStyle , const RECT& rec t, CWnd* pParentWnd , UINT nID , LPVOID lpParam = NULL);

返 回 值

如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

dwExStyle

指 定 了 要 创 建 的 CWnd 的 扩 展 风 格 。 对 窗 口 应 用 任 何 扩 展 的 窗 口 风 格 。

lpszClassName

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

的 任 何 名 字 , 或 者 是 任 何 预 定 义 的 控 制 类 名 。 它 不 能 是 NULL 。

lpszWindowName

指 向 一 个 用 null 结 尾 的 字 符 串 , 包 含 了 窗 口 的 名 字 。

dwStyle

指 定 了 窗 口 风 格 属 性 。 对 可 能 取 值 的 描 述 参 见 “ 窗 口 风 格 ” 和

CWnd::Create 。

x y

nWidth

指 定 了 CWnd 窗 口 的 初 始 x 轴 位 置 。指 定 了 CWnd 窗 口 的 初 始 y 轴 位 置 。

指 定 了 CWnd 窗 口 的 宽 度 ( 设 备 单 位 ) 。

nHeight

指 定 了 CWnd 窗 口 的 高 度 ( 设 备 单 位 ) 。

hwndParent

标 识 了 要 创 建 的 CWnd 窗 口 的 父 窗 口 或 拥 有 者 窗 口 。 对 顶 层 窗 口 , 使 用

NULL 。

nIDorHMenu

lpParam

指向 CREATESTRUCT 结 构 的 lpCreateParams 字 段 所 代 表 的 数 据 。

rect

窗 口 的 大 小 和 位 置 , 使 用 pParentWnd 的 客 户 区 坐 标 。

pParentWnd

父 窗 口 。

nID

子 窗 口 的 ID 。

说 明

这 个 函 数 使 用 dwExStyle 所 指 定 的 扩 展 风 格 创 建 一 个 重 叠 式 、 弹 出 式 或 子 窗 口 。

CreateEx 的 参 数 指 定 了 WNDCLASS 、 窗 口 标 题 、 窗 口 风 格 以 及 ( 可 选 ) 窗 口的 初 始 位 置 和 大 小 。 CreateEx 还 指 定 了 窗 口 的 父 窗 口 ( 如 果 有 ) 和 ID 。

当 CreateEx 执 行 的 时 候 , W indows 向 窗 口 发 送 WM_GETMINMAXINFO 、WM_NCCREA- TE 、 WM_NCCALCSIZE 和 W M _CREATE 消 息 。

要 扩 展 缺 省 的 消 息 处 理 , 应 从 CWnd 继 承 一 个 类 , 在 新 类 中 加 入 消 息 映 射 , 并

为 以 上 的 消 息 提 供 成 员 函 数 。 例 如 , 可 以 重 载 OnCreate 为 新 类 提 供 需 要 的 初 始化 功 能 。

重 载 其 它 OnMessage 消 息 处 理 函 数 , 为 你 的 派 生 类 提 供 进 一 步 的 功 能 。

如 果 给 定 了 WS_VISIBLE 风 格 , W indows 将 向 窗 口 发 送 激 活 和 显 示 窗 口 所 需的 所 有 消 息 。 如 果 窗 口 风 格 中 指 定 了 标 题 条 , 则 lpszWindowName 参 数 中 指 定的 窗 口 标 题 将 显 示 在 标 题 条 上 。

dwStyle 参 数 可 以 是 窗 口 风 格 的 任 意 组 合 。

请 参 阅 CWnd::Create, ::CreateWindowEx

CWnd::CreateGrayCaret

void CreateGrayCaret( int nWidth , int nHeight );

参 数

nWidth

指 定 了 插 字 符 的 宽 度 ( 逻 辑 单 位 ) 。 如 果 这 个 参 数 为 0 , 则 宽 度 被 设 为系 统 定 义 的 窗 口 边 框 宽 度 。

nHeight

指 定 了 插 字 符 的 高 度 ( 逻 辑 单 位 ) 。 如 果 这 个 参 数 为 0 , 则 高 度 被 设 为

系 统 定 义 的 窗 口 边 框 高 度 。

说 明

这 个 函 数 为 系 统 插 字 符 创 建 一 个 灰 色 的 矩 形 , 并 声 明 对 插 字 符 的 所 有 权 。 插 字符 的 形 状 可 以 是 线 条 , 也 可 以 是 方 块 。

参 数 nWidth 和 nHeight 指 定 了 插 字 符 的 宽 度 和 高 度 ( 逻 辑 单 位 ) ; 实 际 的 宽 度和 高 度 ( 以 像 素 为 单 位 ) 依 赖 于 映 射 模 式 。

使 用 SM_CXBORDER 和 SM_CYBORDER 索 引 调 用 W indows 的GetSystemMetrics 函 数 可 以 获 得 系 统 的 窗 口 边 框 宽 度 或 高 度 。 使 用 窗 口 边 框 的宽 度 和 高 度 以 确 保 插 字 符 在 高 分 辨 率 显 示 中 能 够 看 得 见 。

CreateGrayCaret 成 员 函 数 自 动 销 毁 原 来 的 插 字 符 形 状 , 如 果 有 的 话 , 而 并 不 考虑 哪 个 窗 口 拥 有 这 个 插 字 符 。 在 被 创 建 之 后 , 插 字 符 是 隐 藏 的 。 要 显 示 插 字 符 , 必 须 调 用 ShowCaret 成 员 函 数 。

系 统 插 字 符 是 一 种 共 享 资 源 。 CWnd 只 应 在 它 具 有 输 入 焦 点 或 处 于 活 动 状 态 时才 创 建 插 字 符 。 在 它 失 去 输 入 焦 点 或 变 为 非 活 动 以 前 , 它 应 当 销 毁 插 字 符 。

请 参 阅 ::DestroyCaret, ::GetSystemMetrics, CWnd::ShowCaret, ::CreateCaret

CWnd::CreateSolidCaret

void CreateSolidCaret( int nWidth , int nHeight );

参 数

nWidth

指 定 了 插 字 符 的 宽 度 ( 逻 辑 单 位 ) 。 如 果 这 个 参 数 为 0 , 则 宽 度 被 设 为系 统 定 义 的 窗 口 边 框 宽 度 。

nHeight

指 定 了 插 字 符 的 高 度 ( 逻 辑 单 位 ) 。 如 果 这 个 参 数 为 0 , 则 高 度 被 设 为系 统 定 义 的 窗 口 边 框 高 度 。

说 明

这 个 函 数 为 系 统 插 字 符 创 建 一 个 实 心 矩 形 , 并 声 明 对 插 字 符 的 所 有 权 。 插 字 符的 形 状 可 以 是 线 条 , 也 可 以 是 方 块 。

参 数 nWidth 和 nHeight 指 定 了 插 字 符 的 宽 度 和 高 度 ( 逻 辑 单 位 ) ; 实 际 的 宽 度和 高 度 ( 以 像 素 为 单 位 ) 依 赖 于 映 射 模 式 。

使 用 SM_CXBORDER 和 SM_CYBORDER 索 引 调 用 W indows 的

GetSystemMetrics 函 数 可 以 获 得 系 统 的 窗 口 边 框 宽 度 或 高 度 。 使 用 窗 口 边 框 的

宽 度 和 高 度 以 确 保 插 字 符 在 高 分 辨 率 显 示 中 能 够 看 得 见 。

CreateSolidCaret 成 员 函 数 自 动 销 毁 原 来 的 插 字 符 形 状 , 如 果 有 的 话 , 而 并 不 考虑 哪 个 窗 口 拥 有 这 个 插 字 符 。 在 被 创 建 之 后 , 插 字 符 是 隐 藏 的 。 要 显 示 插 字 符 , 必 须 调 用 ShowCaret 成 员 函 数 。

系 统 插 字 符 是 一 种 共 享 资 源 。 CWnd 只 应 在 它 具 有 输 入 焦 点 或 处 于 活 动 状 态 时才 创 建 插 字 符 。 在 它 失 去 输 入 焦 点 或 变 为 非 活 动 以 前 , 它 应 当 销 毁 插 字 符 。

请 参 阅 ::DestroyCaret, ::GetSystemMetrics, CWnd::ShowCaret, ::CreateCaret

CWnd::CWnd

CWnd( );

说 明

构 造 一 个 CWnd 对 象 。 必 须 在 CreateEx 或 Create 处 于 函 数 被 调 用 以 后 才 会 创建 W indows 的 窗 口 并 与 之 连 接 。

请 参 阅 CWnd::CreateEx, CWnd::Create

CWnd::Default

LRESULT Default( );

返 回 值

依 赖 于 发 出 的 消 息 。

说 明

调 用 缺 省 的 窗 口 过 程 。 缺 省 的 窗 口 过 程 提 供 了 对 应 用 程 序 没 有 处 理 的 任 何 窗 口消 息 的 缺 省 处 理 。 这 个 处 理 函 数 确 保 每 个 消 息 都 被 处 理 。

请 参 阅 CWnd::DefWindowProc, ::DefWindowProc

CWnd::DefWindowProc

virtual LRESULT DefWindowProc( UINT message , W P A R A M wParam , LPARAM

lParam );

返 回 值

依 赖 于 发 送 的 消 息 。

message

指 定 了 要 处 理 的 W indows 消 息 。

wParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

lParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

说 明

这 个 函 数 调 用 缺 省 的 窗 口 过 程 , 提 供 了 对 应 用 程 序 没 有 处 理 的 任 何窗 口 消 息 的 缺 省 处 理 。 这 个 成 员 函 数 确 保 每 个 消 息 都 被 处 理 。 它 必须 用 与 窗 口 过 程 接 收 到 的 参 数 相 同 的 参 数 来 调 用 。

请 参 阅 CWnd::Default, ::Def W indowProc

CWnd::DeleteTempMap

static void PASCAL DeleteTempMap( );

这 个 函 数 被 C W inApp 对 象 的 空 闲 时 间 处 理 函 数 自 动 调 用 。 删 除 FromHandle 成员 函 数 所 产 生 的 任 何 临 时 CWnd 对 象 。

请 参 阅 CWnd::FromHandle

CWnd::DestroyWindow

virtual BOOL DestroyWindow( );

返 回 值

如 果 销 毁 了 窗 口 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

这 个 函 数 销 毁 一 个 与 CWnd 对 象 相 连 接 的 W indows 窗 口 。 DestroyWindow 成 员函 数 向 窗 口 发 送 一 个 适 当 的 消 息 , 以 使 该 窗 口 变 为 非 激 活 的 并 移 去 输 入 焦 点 。它 还 销 毁 窗 口 的 菜 单 , 清 除 应 用 程 序 的 队 列 , 销 毁 定 时 器 , 清 除 剪 贴 板 拥 有 权 , 并 且 如 果 CWnd 对 象 位 于 剪 贴 板 观 察 器 链 的 顶 部 , 还 打 断 剪 贴 板 观 察 器 链 。 它向 窗 口 发 送 WM_DESTROY 消 息 和 WM_NCDESTROY 消 息 。 它 不 销 毁 CWnd 对 象 。

Destroy W indow 是 一 个 用 于 执 行 清 除 工 作 的 占 位 符 。 因 为 Destroy W indow 是 一个 虚 拟 函 数 , 在 ClassWizard 中 , 它 显 示 在 任 何 CWnd 的 派 生 类 中 。 但 是 即 使你 在 自 己 的 CWnd 派 生 类 中 重 载 了 这 个 函 数 , 也 不 必 调 用 DestroyWindow 。 如果 在 MFC 代 码 中 没 有 调 用 DestroyWindow , 并 且 你 希 望 调 用 它 的 话 , 必 须 在自 己 的 代 码 中 调 用 它 。

例 如 , 假 定 你 在 CView 的 派 生 类 中 重 载 了 DestroyWindow 。 由 于 MFC 的 源 代码 在 任 何 CFrameWnd 的 派 生 类 中 都 没 有 调 用 DestroyWindow , 因 此 除 非 你 调用 了 它 , 否 则 你 重 载 的 DestroyWindow 不 会 被 调 用 。

如 果 该 窗 口 是 其 它 窗 口 的 父 窗 口 , 当 父 窗 口 被 销 毁 时 , 这 些 子 窗 口 将 被 自 动 销毁 。 DestroyWindow 成 员 函 数 首 先 销 毁 子 窗 口 , 然 后 销 毁 本 窗 口 。

Destroy W indow 成 员 函 数 也 销 毁 CDialog::Create 创 建 的 无 模 式 对 话 框 。

如 果 要 被 销 毁 的 CWnd 是 一 个 子 窗 口 并 且 没 有 设 置

WS_EX_NOPARENTNOTIFY 风 格 , 则 W M _PARENTNOTIFY 消 息 将 被 发 送

到 父 窗 口 。

请 参 阅 CWnd::OnDestroy, CWnd::Detach, ::DestroyWindow

CWnd::Detach

HWND Detach( );

返 回 值

指 向 W indows 对 象 的 H W N D 句 柄 。

说 明

将 一 个 W indows 的 句 柄 从 CWnd 对 象 上 分 离 并 返 回 这 个 句 柄 。

请 参 阅 CWnd::Attach

CWnd::DlgDirList

int DlgDirList( LPTSTR lpPathSpec , int nIDListBox , int nIDStaticPath , UINT

nFileType );

返 回 值

如 果 函 数 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpPathSpec

指 向 一 个 以 null 结 尾 的 字 符 串 , 其 中 包 含 了 路 径 或 文 件 名 。 D lgDirList

修 改 这 个 字 符 串 , 它 必 须 足 够 长 , 能 够 容 纳 改 变 后 的 内 容 。 更 多 的 信 息

参 见 后 面 的 说 明 部 分 。

nIDListBox

指 定 了 列 表 框 的 标 识 符 。 如 果 nIDListBox 为 0 , D lgDirList 假 定 不 存 在 列表 框 , 因 此 不 作 填 充 。

nIDStaticPath

指 定 了 用 于 显 示 当 前 驱 动 器 和 目 录 的 静 态 文 本 控 件 的 标 识 符 。 如 果

nIDStaticPath 为 0 , 则 DlgDirList 假 定 没 有 这 样 的 文 本 控 件 。

nFileType

指 定 了 要 显 示 的 文 件 的 属 性 。 它 可 以 是 下 列 值 的 组 合 :

  • DDL_READWRITE 可 读 写 的 数 据 文 件 , 没 有 其 它 属 性 。

  • DDL_READONLY 只 读 文 件

  • DDL_HIDDEN 隐 藏 文 件

  • DDL_SYSTEM 系 统 文 件

  • DDL_DIRECTORY 目 录

  • DDL_ARCHIVE 档案

  • DDL_POSTMSGS LB_DIR 标 志 。 如 果 设 置 了 LB_DIR 标 志 , W

    indows 将 D lgDirList 产 生 的 消 息 放 入 应 用 程 序 的 队 列 , 否 则 , 它 们被 直 接 发 送 到 对 话 框 过 程 。

  • DDL_DRIVES 驱 动 器 。 如 果 设 置 了 DDL_DRIVES 标 志 , 就 会 自

    动设置 DDL_EXCLUSIVE 标 志 。 因 此 , 要 创 建 包 括 驱 动 器 和 文 件 的 目 录列 表 , 你 必 须 两 次 调 用 D lgDirList : 第 一 次 使 用 DDL_DRIVES 标 志 , 第 二 次 使 用 列 表 中 其 它 标 志 。

  • DDL_EXCLUSIVE 不 相 容 的 位 。 如 果 设 置 了 这 个 位 , 则 只 列

    出 指 定类 型 的 文 件 ; 否 则 列 出 普 通 文 件 和 指 定 类 型 的 文 件 。

说 明

这 个 函 数 用 文 件 或 目 录 列 表 来 填 充 一 个 列 表 框 。 DlgDirList 向 列 表 框 发 送LB_RESETCON- TENT 和 LB_DIR 消 息 。 它 用 与 lpPathSpec 指 定 的 路 径 匹 配 的所 有 文 件 的 名 字 填 充 nIDListBox 指 定 的 列 表 框 。

lpPathSpec 参 数 具 有 如 下 形 式 :

[drive:] [ [\u]directory[\idirectory]...\u] [filename]

在 这 个 例 子 中 , drive 是 驱 动 器 字 母 , directory 是 有 效 的 目 录 名 , filename 是 有效 的 文 件 名 , 它 必 须 至 少 包 含 一 个 通 配 符 。 通 配 符 是 一 个 问 号 ( ? ) , 它 意 味着 与 任 何 字 符 匹 配 , 还 有 星 号 ( * ) , 它 意 味 着 与 任 意 个 数 的 字 符 匹 配 。

如 果 你 为 lpPathSpec 指 定 了 一 个 0 长 度 的 字 符 串 , 或 者 你 只 指 定 了 目 录 名 却 没有 包 含 任 何 文 件 描 述 , 则 字 符 串 将 变 为 “ *.* ”。

如 果 lpPathSpec 中 包 括 了 驱 动 器 和 /或 目 录 名 , 则 在 填 充 列 表 框 之 前 , 当 前 驱 动

器 和 目 录 将 被 改 变 到 设 定 的 驱 动 器 和 目 录 。 由 nIDStaticPath 指 定 的 文 本 控 件 也被 更 新 为 新 的 驱 动 器 和 /或 目 录 名 。

在 列 表 框 被 填 充 以 后 , lpPathSpec 将 被 更 新 为 去 掉 驱 动 器 和 / 或 目 录 部 分 的 路径 。

请 参 阅 CWnd::DlgDirListComboBox, ::D lgDirList

CWnd::DlgDirListComboBox

int DlgDirListComboBox( LPTSTR lpPathSpec , int nIDComboBox , int

nIDStaticPath , UINT nFileType );

返 回 值

指 明 了 该 函 数 的 结 果 。 如 果 建 立 了 一 个 列 表 框 , 即 使 是 空 的 列 表 框 , 则 返 回 一个 非 零 值 。 返 回 值 为 0 则 意 味 着 输 入 字 符 串 中 不 包 含 有 效 的 查 找 路 径 。

参 数

lpPathSpec

指 向 一 个 以 null 结 尾 的 字 符 串 , 其 中 包 含 了 路 径 或 文 件 名 。 D lgDirList

修 改 这 个 字 符 串 , 它 必 须 足 够 长 , 能 够 容 纳 改 变 后 的 内 容 。 更 多 的 信 息

参 见 后 面 的 说 明 部 分 。

nIDComboBox

指 定 了 对 话 框 中 组 合 框 的 标 识 符 。 如 果 nIDComboBox 为 0 ,

DlgDirListComboBox 假 定 不 存 在 组 合 框 , 因 此 不 作 填 充 。

nIDStaticPath

指 定 了 用 于 显 示 当 前 驱 动 器 和 目 录 的 静 态 文 本 控 件 的 标 识 符 。 如 果

nIDStaticPath 为 0 , 则 DlgDirListComboBox 假 定 没 有 这 样 的 文 本 控 件 。

nFileType

指 定 了 要 显 示 的 文 件 的 属 性 。 它 可 以 是 下 列 值 的 组 合 :

  • DDL_READWRITE 可 读 写 的 数 据 文 件 , 没 有 其 它 属 性 。

  • DDL_READONLY 只 读 文 件

  • DDL_HIDDEN 隐 藏 文 件

  • DDL_SYSTEM 系 统 文 件

  • DDL_DIRECTORY 目 录

  • DDL_ARCHIVE 档 案

  • DDL_POSTMSGS CB_DIR 标 志 。如 果 设 置 了 CB_DIR 标 志 ,W

    indows 将 DlgDirListComboBox 产 生 的 消 息 放 入 应 用 程 序 的 队 列 , 否 则 , 它 们被 直 接 发 送 到 对 话 框 过 程 。

  • DDL_DRIVES 驱 动 器 。 如 果 设 置 了 DDL_DRIVES 标 志 , 就 会 自

    动设置 DDL_EXCLUSIVE 标 志 。 因 此 , 要 创 建 包 括 驱 动 器 和 文 件 的 目 录

列 表 ,你 必 须 两 次 调 用 D lgDirListComboBox :第 一 次 使 用 DDL_DRIVES

标 志 , 第 二 次 使 用 列 表 中 其 它 标 志 。

  • DDL_EXCLUSIVE 不 相 容 的 位 。 如 果 设 置 了 这 个 位 , 则 只 列

    出 指 定类 型 的 文 件 ; 否 则 列 出 普 通 文 件 和 指 定 类 型 的 文 件 。

说 明

这 个 函 数 用 文 件 或 目 录 列 表 来 填 充 一 个 组 合 框 中 的 列 表 框 。D lgDirListComboBox 向 组 合 框 发 送 C B_RESETCONTENT 和 C B_DIR 消 息 。 它用 与 lpPathSpec 指 定 的 路 径 匹 配 的 所 有 文 件 的 名 字 填 充 nIDComboBox 指 定 的组 合 框 。

lpPathSpec 参 数 具 有 如 下 形 式 :

[drive:] [ [\u]directory[\idirectory]...\u] [filename]

在 这 个 例 子 中 , drive 是 驱 动 器 字 母 , directory 是 有 效 的 目 录 名 , filename 是 有效 的 文 件 名 , 它 必 须 至 少 包 含 一 个 通 配 符 。 通 配 符 是 一 个 问 号 ( ? ) , 它 意 味着 与 任 何 字 符 匹 配 , 还 有 星 号 ( * ) , 它 意 味 着 与 任 意 个 数 的 字 符 匹 配 。

如 果 你 为 lpPathSpec 指 定 了 一 个 0 长 度 的 字 符 串 , 或 者 你 只 指 定 了 目 录 名 却 没有 包 含 任 何 文 件 描 述 , 则 字 符 串 将 变 为 “ *.* ”。

如 果 lpPathSpec 中 包 括 了 驱 动 器 和 /或 目 录 名 , 则 在 填 充 列 表 框 之 前 , 当 前 驱 动器 和 目 录 将 被 改 变 到 设 定 的 驱 动 器 和 目 录 。 由 nIDStaticPath 指 定 的 文 本 控 件 也

被 更 新 为 新 的 驱 动 器 和 /或 目 录 名 。

在 列 表 框 被 填 充 以 后 , lpPathSpec 将 被 更 新 为 去 掉 驱 动 器 和 / 或 目 录 部 分 的 路径 。

请 参 阅 CWnd::DlgDirList, CWnd::DlgDirSelect, ::DlgDirListComboBox

CWnd::DlgDirSelect

BOOL DlgDirSelect( LPTSTR lpString , int nIDListBox );

返 回 值

如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpString

指 向 一 个 缓 冲 区 , 用 于 获 取 列 表 框 的 当 前 选 择 。

nIDListBox

指 定 了 对 话 框 中 列 表 框 的 整 数 ID 。

这 个 函 数 获 取 列 表 框 的 当 前 选 择 。 它 假 定 列 表 框 已 经 被 D lgDirList 成 员 函 数 所填 充 并 且 选 择 项 是 一 个 驱 动 器 字 母 , 一 个 文 件 或 一 个 目 录 名 。

D lgDirSelect 成 员 函 数 将 选 择 项 拷 贝 到 lpString 所 指 定 的 缓 冲 区 。 如 果 没 有 选 择项 , 则 不 改 变 lpString 。

D lgDirSelect 向 列 表 框 发 送 LB_GETCURSEL 和 LB_GETTEXT 消 息 。不 允 许 从 列 表 框 返 回 多 于 一 个 文 件 名 。 列 表 框 不 能 是 多 选 列 表 框 。

请 参 阅 CWnd::DlgDirList, CWnd::DlgDirListComboBox, CWnd::DlgDirSelectComboBox, ::DlgDirSelectEx

CWnd::DlgDirSelectComboBox

BOOL DlgDirSelectComboBox( LPTSTR lpString , int nIDComboBox );

返 回 值

如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

lpString

指 向 一 个 缓 冲 区 , 用 于 获 取 选 择 的 路 径 。

nID Combo Box

指 定 了 对 话 框 中 组 合 框 的 整 数 ID 。

说 明

这 个 函 数 获 取 组 合 框 中 列 表 框 的 当 前 选 择 。 它 假 定 列 表 框 已 经 被D lgDirListComboBox 成 员 函 数 所 填 充 并 且 选 择 项 是 一 个 驱 动 器 字 母 、 一 个 文 件或 一 个 目 录 名 。

D lgDirSelectComboBox 成 员 函 数 将 选 择 项 拷 贝 到 lpString 所 指 定 的 缓 冲 区 。 如果 没 有 选 择 项 , 则 不 改 变 lpString 。

D lgDirSelectComboBox 向 组 合 框 发 送 C B_GETCURSEL 和 C B_GETTEXT 消息 。

不 允 许 从 组 合 框 返 回 多 于 一 个 文 件 名 。

请 参 阅 CWnd::DlgDirListComboBox, ::D lgDirSelectComboBoxEx

CWnd::DoDataExchange

virtual void DoDataExchange( CDataExchange* pDX );

参 数

pDX

指向 CDataExchange 对 象 的 指 针 。

说 明

框 架 调 用 这 个 函 数 以 交 换 并 校 验 对 话 框 数 据 。

永 远 不 要 直 接 调 用 这 个 函 数 。 它 是 由 UpdateData 成 员 函 数 所 调 用 的 。 可 调 用

UpdateData 函 数 以 初 始 化 对 话 框 控 件 或 从 对 话 框 获 取 数 据 。

当 你 从 CDialog 继 承 应 用 程 序 特 有 的 对 话 框 类 时 , 如 果 你 想 要 利 用 框 架 的 自 动数 据 交 换 和 校 验 功 能 , 你 需 要 重 载 这 个 成 员 函 数 。 ClassWizard 将 为 你 编 写 这 个成 员 函 数 的 重 载 版 本 , 包 含 了 对 话 框 数 据 交 换 ( DDX ) 和 校 验 ( DDV ) 全 局 函数 调 用 所 需 的 “ 数 据 映 射 ” 。

要 自 动 生 成 这 个 函 数 的 重 载 版 本 , 首 先 用 对 话 框 编 辑 器 创 建 一 个 对 话 框 资 源 , 然 后 继 承 一 个 应 用 程 序 特 有 的 对 话 框 类 。 然 后 调 用 ClassWizard 并 用 它 来 把 变量 、 数 据 和 校 验 范 围 与 新 对 话 框 的 不 同 控 件 关 联 起 来 。 ClassWizard 将 写 入 重 载

的 DoDataExchange ,其 中 包 含 了 数 据 映 射 。下 面 是 ClassWizard 生 成 的 DDX/DDV

代 码 块 的 例 子 :

void CPenWidthsDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CPenWidthsDlg)

DDX_Text(pDX, IDC_THIN_PEN_WIDTH, m_nThinWidth); DDV_MinMaxInt(pDX, m_nThinWidth, 1, 20); DDX_Text(pDX, IDC_THICK_PEN_WIDTH, m_nThickWidth); DDV_MinMaxInt(pDX, m_nThickWidth, 1, 20);

//}}AFX_DATA_MAP

}

ClassWizard 将 维 护 \\{{ 和 \\}} 分 解 符 之 内 的 代 码 。 你 不 应 该 修 改 这 些 代 码 。重 载 的 DoDataExchange 成 员 函 数 必 须 在 源 文 件 的 宏 语 句 之 前 。

有 关 ClassWizard 生 成 的 DDX_ 和 DDV_ 宏 的 更 多 信 息 参 见 技 术 注 释 26 。

请 参 阅 CWnd::UpdateData

CWnd::DragAcceptFiles

void DragAcceptFiles( BOOL bAccept = TRUE );

bAccept

指 明 是 否 接 收 拖 放 文 件 的 标 志 。

说 明

使 用 CWnd 指 针 , 在 应 用 程 序 的 C W inApp::InitInstance 函 数 中 , 在 一 个 窗 口 的内 部 调 用 这 个 成 员 函 数 , 以 指 明 你 的 主 窗 口 和 所 有 的 子 窗 口 是 否 接 收 从W indows 的 文 件 管 理 器 拖 放 的 文 件 。

只 有 将 bAccept 参 数 设 为 TRUE 并 调 用 了 DragAcceptFiles 函 数 的 窗 口 才 将 它 标识 为 能 够 处 理 W indows 的 WM_DROPFILES 消 息 。 例 如 , 在 M D I 应 用 程 序 中 , 如 果 在 调 用 DragAcceptFiles 函 数 的 时 候 使 用 了 CMDIFrameWnd 窗 口 指 针 , 则只 有 CMDIFrameWnd 窗 口 得 到 WM_DROPFILES 消 息 。 这 个 消 息 将 不 会 被 发送 到 所 有 打 开 的 CMDIChildWnd 窗 口 。 要 使 CMDIChildWnd 窗 口 能 够 接 收 这个 消 息 , 你 必 须 用 CMDIChildWnd 指 针 调 用 DragAcceptFiles 函 数 。

要 终 止 接 收 拖 放 文 件 , 则 调 用 这 个 成 员 函 数 并 令 bAccept 等 于 FALSE 。

请 参 阅 ::DragAcceptFiles, WM_DROPFILES CWnd::DrawMenuBar

void DrawMenuBar( );

重 画 菜 单 条 。 如 果 在 W indows 创 建 窗 口 以 后 菜 单 条 发 生 了 改 变 , 则 应 调 用 这 个函 数 以 画 出 改 变 了 的 菜 单 条 。

请 参 阅 ::D rawMenuBar

CWnd::EnableScrollBar

BOOL EnableScrollBar( int nSBFlags , U INT nArrowFlags = ESB_ENABLE_BOTH );

返 回 值

如 果 箭 头 被 允 许 或 禁 止 , 如 指 定 的 那 样 , 则 返 回 非 零 值 。 否 则 为 0 , 指 明 箭 头已 经 处 于 要 求 的 状 态 , 或 者 发 生 了 错 误 。

参 数

nSBFlags

指 定 了 滚 动 条 类 型 。 可 以 是 下 列 值 之 一 :

  • SB_BOTH 允 许 或 禁 止 窗 口 的 水 平 和 垂 直 滚 动 条 的 箭 头 。

  • SB_HORZ 允 许 或 禁 止 窗 口 的 水 平 滚 动 条 的 箭 头 。

  • SB_VERT 允 许 或 禁 止 窗 口 的 垂 直 滚 动 条 的 箭 头 。

nArrowFlags

指 定 滚 动 条 箭 头 是 被 允 许 还 是 禁 止 , 以 及 哪 个 箭 头 将 被 允 许 或 禁 止 。 可 以 是 下列 值 之 一 :

  • ESB_ENABLE_BOTH 允 许 滚 动 条 的 两 个 箭 头 ( 缺 省 值 ) 。

  • ESB_DISABLE_LTUP 禁 止 水 平 滚 动 条 的 左 箭 头 或 垂 直 滚 动

    条 的 上 箭头。

  • ESB_DISABLE_RTDN 禁 止 水 平 滚 动 条 的 右 箭 头 或 垂 直 滚 动

    条 的 下箭 头 。

  • ESB_DISABLE_BOTH 禁 止 滚 动 条 的 两 个 箭 头 。

说 明

允 许 或 禁 止 滚 动 条 的 一 个 或 两 个 箭 头 。

请 参 阅 CWnd::ShowScrollBar, CScrollBar::EnableScrollBar

CWnd::EnableScrollBarCtrl

void EnableScrollBarCtrl( int nBa r , BOOL bEnable = TRUE );

nBar

滚 动 条 标 识 符 。

bEnable

指 定 滚 动 条 是 要 被 禁 止 还 是 允 许 。

说 明

调 用 这 个 函 数 以 允 许 或 禁 止 窗 口 的 滚 动 条 。 如 果 窗 口 拥 有 同 类 的 滚 动 条 控 件 , 则 该 滚 动 条 被 使 用 ; 否 则 将 使 用 窗 口 自 己 的 滚 动 条 。

请 参 阅 CWnd::GetScrollBarCtrl

CWnd::EnableToolTips

BOOL EnableToolTips( BOOL bEnable );

返 回 值

如 果 允 许 工 具 提 示 , 则 返 回 TRU E ; 否 则 返 回 FALSE 。

bEnable

指 定 工 具 提 示 控 件 是 要 被 允 许 还 是 禁 止 。 如 果 是 TRUE 则 允 许 该 控 件 ; 如 果 是 FALSE 则 禁 止 该 控 件 。

说 明

调 用 这 个 成 员 函 数 以 允 许 给 定 窗 口 的 工 具 提 示 。 重 载 OnToolHitTest 函 数 , 为窗 口 提 供 TOOLINFO 结 构 。

注意 有 些 窗 口 , 如 CToolBar , 提 供 OnToolHitTest 的 内 建 实 现 。有 关 这 个 结 构 的 更 多 信 息 参 见 W in32 SDK 程 序 员 参 考 中 的 TOOLINFO 。

要 为 你 的 子 控 件 显 示 工 具 提 示 , 仅 调 用 EnableToolTips 是 不 够 的 , 除 非 父 窗 口是 从 CFrameWnd 继 承 的 。 这 是 因 为 CFrameWnd 提 供 了 TTN_NEEDTEXT 通知 的 缺 省 处 理 函 数 。 如 果 你 的 父 窗 口 不 是 从 CFrameWnd 继 承 的 , 这 意 味 着 , 如 果 它 是 一 个 对 话 框 或 格 式 视 图 , 则 你 的 子 控 件 的 工 具 提 示 将 不 会 正 确 显 示 , 除 非 你 提 供 了 工 具 提 示 通 知 TTN_NEEDTEXT 的 缺 省 处 理 函 数 。

用 EnableToolTips 为 窗 口 提 供 的 缺 省 工 具 提 示 没 有 相 关 的 文 本 。 为 了 获 得 用 于显 示 工 具 提 示 的 文 本 , 在 显 示 工 具 提 示 窗 口 之 前 , 将 向 工 具 提 示 控 件 的 父 窗 口发 送 一 个 TTN_NEEDTEXT 通 知 。 如 果 这 个 消 息 没 有 处 理 函 数 , 为TOOLTIPTEXT 结 构 的 pszText 成 员 分 配 一 些 值 , 则 将 不 会 为 工 具 提 示 显 示 文

本 。

请 参 阅 CWnd::CancelToolTips, CWnd::OnToolHitTest, CToolBar, TOOLINFO

CWnd::EnableWindow

BOOL EnableWindow( BOOL bEnable = TRUE );

返 回 值

指 明 了 调 用 EnableWindow 成 员 函 数 之 前 窗 口 的 状 态 。 如 果 窗 口 原 来 是 禁 止 的 , 则 返 回 非 零 值 。 如 果 窗 口 原 来 是 允 许 的 , 或 者 发 生 了 错 误 , 则 返 回 0 。

参 数

bEnable

指 定 是 把 窗 口 允 许 还 是 禁 止 。 如 果 这 个 参 数 为 TRU E , 则 窗 口 被 允 许 。如 果 参 数 为 FALSE , 则 窗 口 将 被 禁 止 。

说 明

允 许 或 禁 止 鼠 标 和 键 盘 输 入 。 当 禁 止 输 入 时 , 类 似 鼠 标 点 击 和 击 键 之 类 的 输 入将 被 忽 略 。 当 允 许 输 入 时 , 窗 口 将 处 理 所 有 输 入 。

如 果 允 许 状 态 发 生 变 化 , 则 在 函 数 返 回 之 前 将 发 送 WM_ENABLE 消 息 。

如 果 被 禁 止 , 则 所 有 的 子 窗 口 都 被 禁 止 。 尽 管 没 有 向 它 们 发 送 WM_ENABLE

消 息 。

在 窗 口 被 激 活 之 前 必 须 允 许 窗 口 。 例 如 , 如 果 应 用 程 序 正 显 示 一 个 无 模 式 对 话框 , 并 且 禁 止 了 它 的 主 窗 口 , 则 在 对 话 框 被 销 毁 之 前 , 主 窗 口 必 须 被 允 许 。 否则 , 另 一 个 窗 口 将 获 得 输 入 焦 点 并 被 激 活 。 如 果 子 窗 口 被 禁 止 , 当 W indows 试图 确 定 哪 个 窗 口 将 得 到 鼠 标 消 息 时 , 它 将 被 忽 略 。

在 缺 省 情 况 下 , 窗 口 在 被 创 建 的 时 候 是 允 许 的 。 应 用 程 序 可 以 在 Create 或CreateEx 成 员 函 数 中 指 定 WS_DISABLED 风 格 以 创 建 一 个 最 初 就 禁 止 的 窗 口 。在 窗 口 被 创 建 以 后 , 应 用 程 序 也 可 以 利 用 EnableWindow 成 员 函 数 来 允 许 或 禁止 窗 口 。

应 用 程 序 可 以 用 这 个 函 数 来 允 许 或 禁 止 对 话 框 中 的 控 件 。 被 禁 止 的 控 件 不 能 接收 输 入 焦 点 , 用 户 也 不 能 访 问 它 。

请 参 阅 ::EnableWindow, CWnd::OnEnable

CWnd::EndModalLoop

void EndModalLoop( int nResult );

参 数

nResult

包 含 了 要 返 回 到 RunModalLoop 的 调 用 者 的 值 。

说 明

调 用 这 个 成 员 函 数 以 结 束 对 RunModalLoop 的 调 用 。 nResult 参 数 被 传 给

RunModalLoop 的 返 回 值 。

请 参 阅 CWnd::RunModalLoop, CWnd::ContinueModal

CWnd::EndPaint

void EndPaint( LPPAINTSTRUCT lpPaint );

参 数

lpPaint

指 向 一 个 PAINTSTRUCT 结 构 , 其 中 包 含 了 BeginPaint 成 员 函 数 接 收 到的 绘 图 信 息 。

说 明

标 记 了 给 定 窗 口 的 绘 图 过 程 的 结 束 。 每 个 被 调 用 的 BeginPaint 成 员 函 数 都 需 要有 一 个 对 对 应 的 EndPaint 成 员 函 数 , 仅 在 完 成 绘 图 操 作 以 后 。

如 果 BeginPaint 成 员 函 数 隐 藏 了 插 字 符 , 则 EndPaint 在 屏 幕 上 恢 复 插 字 符 。

请 参 阅 CWnd::BeginPaint, ::EndPaint, CPaintDC

CWnd::ExecuteDlgInit

BOOL ExecuteDlgInit( LPCTSTR lpszResourceName ); BOOL ExecuteDlgInit( LPVOID lpResource );

返 回 值

如 果 执 行 了 一 个 对 话 框 资 源 , 则 返 回 TRU E ; 否 则 返 回 FALSE 。

参 数

lpszResourceName

指 向 一 个 以 null 结 尾 的 字 符 串 的 指 针 , 指 定 了 资 源 的 名 字 。

lpResource

说 明

调 用 这 个 成 员 函 数 以 初 始 化 对 话 框 资 源 。

ExecuteDlgInit 将 使 用 与 执 行 模 块 绑 在 一 起 的 资 源 , 或 者 是 其 它 来 源 的 资 源 。 要实 现 这 个 目 的 , ExecuteDlgInit 通 过 调 用 AfxFindResourceHandle 来 找 到 一 个 资源 句 柄 。 如 果 你 的 MFC 应 用 程 序 没 有 使 用 共 享 DLL ( MFCx0[U][D].DLL ) , 那 么 AfxFindResourceHandle 调 用 AfxGetResourceHandle , 该 函 数 返 回 可 执 行 程序 中 当 前 资 源 的 句 柄 。 如 果 你 的 MFC 应 用 程 序 使 用 了 MFCx0[U][D].DLL , AfxFindResourceHandle 遍 历 整 个 共 享 的 CDynLinkLibrary 对 象 列 表 以 及 扩 展DLL 以 查 找 正 确 的 资 源 句 柄 。

请 参 阅 CDialog::OnInitDialog, ::WM_INITDIALOG

CWnd::FilterToolTipMessage

void FilterToolTipMessage( MSG* pMsg );

参 数

pMsg

说 明

这 个 成 员 函 数 被 框 架 调 用 , 用 以 显 示 与 工 具 条 上 的 按 钮 相 关 的 工 具 提 示 信 息 。通 常 它 是 在 PreTranslateMessage 函 数 内 调 用 的 。

当 框 架 没 有 为 你 调 用 这 个 函 数 时 , 主 动 调 用 它 。

请 参 阅 CWnd::OnToolHitTest

CWnd::FindWindow

static CWnd* PASCAL FindWindow( LPCTSTR lpszClassNam e, LPCTSTR

lpszWindowNa- me );

返 回 值

标 识 了 具 有 指 定 的 类 名 或 窗 口 名 的 窗 口 。 如 果 没 有 找 到 这 样 的 窗 口 , 则 返 回

NULL 。

返 回 的 CWnd* 值 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

参 数

lpszClassName

指 向 一 个 以 null 结 尾 的 字 符 串 , 指 定 了 窗 口 类 ( 一 个 WNDCLASS 结 构 ) 的 名 字 。 如 果 lpClassName 为 NULL , 则 所 有 的 类 名 都 匹 配 。

lpszWindowName

指 向 一 个 以 null 结 尾 的 字 符 串 , 指 定 了 窗 口 的 名 字 ( 窗 口 的 标 题 ) 。 如果 lpWindowName 为 NULL , 所 有 的 窗 口 名 都 匹 配 。

说 明

返 回 顶 层 的 CWnd , 其 窗 口 类 是 由 lpszClassName , 其 窗 口 名 或 标 题 是

lpszWindowName 给 定 的 。 这 个 函 数 不 搜 索 子 窗 口 。

请 参 阅 ::FindWindow

CWnd::FlashWindow

BOOL FlashWindow( BOOL bInvert );

返 回 值

如 果 在 调 用 FlashWindow 成 员 函 数 之 前 窗 口 是 激 活 的 , 则 返 回 非 零 值 ; 否 则 返

回 0 。

参 数

bInvert

指定 CWnd 是 要 闪 烁 还 是 返 回 它 的 原 始 状 态 。 如 果 bInvert 为 TRU E , 则CWnd 从 一 种 状 态 闪 烁 到 另 一 种 状 态 。 如 果 bInvert 为 FALSE , 则 窗 口 返回 它 的 原 始 状 态 ( 可 以 是 活 动 或 非 活 动 的 ) 。

说 明

使 给 定 窗 口 闪 烁 一 次 。 要 实 现 连 续 的 闪 烁 , 则 应 该 创 建 一 个 系 统 定 时 器 , 并 反复 调 用 FlashWindow 。使 CWnd 闪 烁 意 味 着 改 变 它 的 标 题 条 的 外 观 ,就像 CWnd 从 非 活 动 状 态 改 变 到 活 动 状 态 , 或 反 之 ( 非 活 动 状 态 的 标 题 条 改 变 到 活 动 标 题条 ; 活 动 标 题 条 改 变 到 非 活 动 标 题 条 ) 。

通 常 , 窗 口 被 闪 烁 以 通 知 用 户 它 需 要 被 注 意 , 但 是 它 当 前 不 具 有 输 入 焦 点 。

仅 当 窗 口 得 到 了 输 入 焦 点 并 且 不 再 需 要 闪 烁 时 , bInvert 才 应 被 设 为 FALSE , 在 等 待 输 入 焦 点 的 时 候 , 应 当 在 对 这 个 函 数 的 连 续 调 用 中 将 它 设 为 TRUE 。

对 于 最 小 化 窗 口 ,这 个 函 数 总 是 返 回 非 零 值 。如 果 窗 口 是 最 小 化 的 ,FlashWindow

只 是 简 单 地 闪 烁 窗 口 的 图 标 , 对 于 最 小 化 窗 口 bInvert 会 被 忽 略 。

请 参 阅 ::FlashWindow

CWnd::FromHandle

static CWnd* PASCAL FromHandle( HWND hWnd );

返 回 值

当 给 定 了 窗 口 的 句 柄 时 , 这 个 函 数 返 回 一 个 CWnd 对 象 的 指 针 。 如 果 CWnd 对象 没 有 与 这 个 句 柄 相 连 接 , 则 创 建 一 个 临 时 的 CWnd 对 象 并 将 它 与 句 柄 连 接 。这 个 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

参 数

hWnd

一个 W indows 窗 口 的 H W N D 句 柄 。

请 参 阅 CWnd::DeleteTempMap

CWnd::FromHandlePermanent

static CWnd* PASCAL FromHandlePermanent( HWND hWnd );

指 向 一 个 CWnd 对 象 的 指 针 。

参 数

hWnd

一个 W indows 窗 口 的 H W N D 句 柄 。

说 明

当 给 定 了 一 个 窗 口 的 句 柄 时 , 这 个 函 数 返 回 指 向 一 个 CWnd 对 象 的 指 针 。 如 果

CWnd 对 象 没 有 与 这 个 句 柄 连 接 , 则 返 回 NULL 。这 个 函 数 与 FromHandle 不 同 , 它 不 生 成 临 时 对 象 。请 参 阅 CWnd::FromHandle

CWnd::GetActiveWindow

static CWnd* PASCAL GetActiveWindow( );

返 回 活 动 窗 口 , 如 果 在 被 调 用 时 没 有 活 动 窗 口 , 则 返 回 NULL 。 这 个 指 针 可 能是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 获 得 活 动 窗 口 的 指 针 。 活 动 窗 口 或 者 是 拥 有 当 前 输 入 焦 点 的 窗 口 , 或者 是 用 SetActiveWindow 成 员 函 数 激 活 的 窗 口 。

请 参 阅 CWnd::SetActiveWindow, ::GetActiveWindow

CWnd::GetCapture

static CWnd* PASCAL GetCapture( );

返 回 值

标 识 了 捕 获 鼠 标 的 窗 口 。 如 果 没 有 窗 口 捕 获 鼠 标 则 返 回 NULL 。返 回 值 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

这 个 函 数 获 得 捕 获 了 鼠 标 的 窗 口 。 在 一 个 给 定 的 时 刻 只 能 有 一 个 窗 口 捕 获 鼠标 。 当 调 用 了 SetCapture 成 员 函 数 之 后 , 窗 口 将 接 收 鼠 标 捕 获 。 这 个 窗 口 将 接收 所 有 的 鼠 标 输 入 , 不 管 光 标 是 否 位 于 它 的 边 界 内 。

请 参 阅 CWnd::SetCapture, ::GetCapture

CWnd::GetCaretPos

static CPoint PASCAL GetCaretPos( );

返 回 值

返 回 一 个 CPoint 对 象 , 包 含 了 插 字 符 位 置 的 坐 标 。

说 明

这 个 函 数 获 得 插 字 符 当 前 位 置 的 客 户 区 坐 标 , 并 且 通 过 CPoint 返 回 。插 字 符 的 位 置 是 用 CWnd 窗 口 的 客 户 区 坐 标 给 出 的 。

请 参 阅 ::GetCaretPos

int GetCheckedRadioButton( int nIDFirstButton , int nIDLastButton );

返 回 值

被 选 中 的 单 选 按 钮 的 ID , 如 果 没 有 选 中 任 何 项 , 则 返 回 0 。

参 数

nIDFirstButton

指 定 了 按 钮 组 中 第 一 个 单 选 按 钮 的 整 数 标 识 符 。

nIDLastButton

指 定 了 按 钮 组 中 最 后 一 个 单 选 按 钮 的 整 数 标 识 符 。

说 明

获 得 指 定 的 按 钮 组 中 当 前 被 选 中 的 单 选 按 钮 的 ID 。

请 参 阅 CWnd::CheckRadioButton

void GetClientRect( LPRECT lpRect ) const;

参 数

lpRect

指 向 一 个 RECT 结 构 或 一 个 CRect 对 象 ,用 于 接 收 客 户 区 坐 标 。left 和 top

成 员 将 被 设 为 0 。 right 和 bottom 成 员 将 包 含 了 窗 口 的 宽 度 和 高 度 。

说 明

这 个 函 数 将 CWnd 的 客 户 区 的 客 户 坐 标 拷 贝 到 lpRect 指 向 的 结 构 中 。 客 户 坐 标指 定 了 客 户 区 的 左 上 角 和 右 下 角 。 由 于 客 户 坐 标 是 相 对 于 CWnd 客 户 区 的 左 上角 的 , 因 此 左 上 角 的 坐 标 是 ( 0,0 ) 。

请 参 阅 CWnd::GetWindowRect, ::GetClientRect

CWnd::GetClipboardOwner

static CWnd* PASCAL GetClipboardOwner( );

返 回 值

如 果 这 个 函 数 执 行 成 功 , 则 返 回 拥 有 剪 贴 板 的 窗 口 。 否 则 , 返 回 NULL 。返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 获 得 剪 贴 板 的 当 前 拥 有 者 。

即 使 剪 贴 板 当 前 没 有 拥 有 者 , 它 也 可 以 包 含 数 据 。

请 参 阅 CWnd::GetClipboardViewer, ::GetClipboardOwner

CWnd::GetClipboardViewer

static CWnd* PASCAL GetClipboardViewer( );

返 回 值

如 果 这 个 函 数 执 行 成 功 , 则 返 回 当 前 负 责 显 示 剪 贴 板 的 窗 口 ; 否 则 返 回 NULL

( 例 如 , 如 果 现 在 没 有 观 察 器 ) 。

返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 获 得 剪 贴 板 观 察 器 链 中 的 第 一 个 窗 口 。

请 参 阅 CWnd::GetClipboardOwner, ::GetClipboardViewer

CWnd::GetControlUnknown

LPUNKNOWN GetControlUnknown( );

返 回 值

返 回 CWnd 对 象 所 代 表 的 OLE 控 件 的 IUnknown 接 口 的 指 针 。 如 果 这 个 对 象 不代 表 一 个 OLE 控 件 , 则 返 回 值 为 NULL 。

说 明

调 用 这 个 函 数 以 获 得 未 知 OLE 控 件 的 指 针 。你 不 应 该 释 放 这 个 IUnknown 指 针 。通 常 , 你 必 须 使 用 它 来 访 问 控 件 的 指 定 接 口 。

GetControlUnknown 返 回 的 接 口 指 针 没 有 被 加 入 引 用 计 数 。 不 要 对 指 针 调 用

IUnknown::Release , 除 非 你 原 来 对 它 调 用 了 IUnknown::AddRef。

请 参 阅 IUnknown::Release, IUnknown::QueryInterface

CWnd::GetCurrentMessage

static const MSG* PASCAL GetCurrentMessage( );

返 回 值

返 回 一 个 指 向 MSG 结 构 的 指 针 , 该 结 构 中 包 含 了 窗 口 当 前 处 理 的 消 息 。 只 应在 OnMessage 消 息 处 理 函 数 内 部 调 用 。

CWnd::GetDC

CDC* GetDC( );

返 回 值

如 果 调 用 成 功 , 则 返 回 CWnd 客 户 区 的 设 备 环 境 ; 否 则 , 返 回 NULL 。 这 个 指针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 获 得 一 个 指 针 , 指 向 一 个 客 户 区 的 公 用 的 、 属 于 类 的 或 者 私 有 的 设 备环 境 , 依 赖 于 为 CWnd 指 定 的 类 风 格 。 对 于 公 用 的 设 备 环 境 , GetDC 每 次 获 得设 备 环 境 时 都 给 它 赋 予 缺 省 值 。 对 于 属 于 类 的 或 者 私 有 的 设 备 环 境 , GetDC 保

持 原 来 的 属 性 不 变 。 在 随 后 的 图 形 设 备 接 口 ( GDI ) 函 数 中 可 以 使 用 设 备 环 境以 在 客 户 区 中 绘 图 。

除 非 设 备 环 境 属 于 一 个 窗 口 类 , 否 则 在 绘 图 之 后 必 须 调 用 ReleaseDC 成 员 函 数以 释 放 设 备 环 境 。 由 于 在 同 一 时 刻 只 有 五 个 公 用 设 备 环 境 可 供 使 用 , 因 此 如 果释 放 设 备 环 境 时 失 败 , 可 能 导 致 其 它 应 用 程 序 不 能 访 问 设 备 环 境 。

如 果 在 注 册 窗 口 类 的 时 候 , 在 WNDCLASS 的 风 格 中 指 定 了 CS _CLASSDC , CS_OWNDC 或 CS_PARENTDC , 则 GetDC 成 员 函 数 将 返 回 属 于 CWnd 类 的设 备 环 境 。

请 参 阅 CWnd::GetDCEx, CWnd::ReleaseDC, CWnd::GetWindowDC, ::GetDC, CClientDC

CWnd::GetDCEx

CDC* GetDCEx( CRgn* prgnClip , D W O R D flags );

返 回 值

如 果 函 数 调 用 成 功 , 则 返 回 指 定 窗 口 的 设 备 环 境 ; 否 则 返 回 NULL 。

参 数

prgnClip

标 识 了 一 个 裁 剪 区 域 , 可 能 与 客 户 窗 口 的 可 视 区 域 组 合 。

flags

可 以 是 下 列 值 之 一 :

  • DCX_CACHE 由 缓 存 而 不 是 O W N D C 或 CLASSDC 窗 口 返 回 一 个

    设备 环 境 。 该 标 志 覆 盖 CS_OWNDC 和 CS_CLASSD C。

  • DCX_CLIPCHILDREN 不 包 括 此 CWnd 窗 口 下 的 所 有 子 窗 口 的 可

    见区 域 。

  • DCX_CLIPSIBLINGS 不 包 括 此 CWnd 窗 口 之 上 的 所 有 兄 弟 窗 口

    的 可见 区 域 。

  • DCX_EXCLUDERGN 在 返 回 的 设 备 环 境 的 可 见 区 域 中 不 包 括

prgnClip 标 识 的 裁 剪 区 域 。

  • DCX_INTERSECTRGN 返 回 的 设 备 环 境 的 可 见 区 域 与 prgnClip

    所 标识 的 裁 剪 区 域 重 叠 。

  • DCX_LOCKWINDOWUPDATE 即 使 调 用 了 会 影 响 此 窗 口 的

LockWindowUpdate 也 允 许 在 窗 口 内 绘 图 。 这 个 值 用 于 在 跟 踪 时 绘 图 。

  • DCX_PARENTCLIP 使 用 父 窗 口 的 可 见 区 域 并 忽 略 父 窗 口 的W

    S _CLIPCHILDR- EN 和 WS_PARENTDC 风 格 。 这 个 值 将 设 备 环 境的 原 点 设 为 CWnd 窗 口 的 左 上 角 。

    • DCX_WINDOW 返 回 与 窗 口 矩 形 而 不 是 客 户 矩 形 相 对 应

      的 设 备 环境。

说 明

这 个 函 数 获 得 CWnd 窗 口 的 设 备 环 境 句 柄 。 这 个 设 备 环 境 可 以 在 随 后 的 G D I 函数 中 使 用 , 用 于 在 客 户 区 中 绘 图 。

这 个 函 数 是 GetDC 函 数 的 扩 展 , 使 应 用 程 序 能 够 更 多 地 控 制 一 个 窗 口 的 设 备 环境 如 何 或 是 否 被 裁 剪 。

除 非 设 备 环 境 属 于 一 个 窗 口 类 , 否 则 在 绘 图 后 必 须 调 用 ReleaseDC 成 员 函 数 以释 放 设 备 环 境 。 由 于 在 同 一 时 刻 仅 有 五 个 公 用 的 设 备 环 境 可 供 使 用 , 因 此 如 果释 放 设 备 环 境 时 失 败 , 则 可 能 导 致 其 它 应 用 程 序 不 能 使 用 设 备 环 境 。

为 了 获 得 在 缓 存 中 的 设 备 环 境 , 应 用 程 序 必 须 指 定 DCX_CACH E 。 如 果 没 有 指定 DCX_CACHE , 并 且 窗 口 既 不 是 CS_OWNDC 也 不 是 CS_CLASSDC , 则 这个 函 数 返 回 NULL 。

如 果 在 注 册 窗 口 类 的 时 候 在 WNDCLASS 结 构 中 指 定 了 CS_CLASSDC , CS_OWNDC 或 CS_PARENTDC 风 格 , 则 GetDCEx 将 返 回 具 有 指 定 特 征 的 设备 环 境 。

有 关 这 些 特 征 的 更 多 信 息 参 见“ W in32 SDK ” 文 档 中 WNDCLASS 结 构 的 描 述 。

请 参 阅 CWnd::BeginPaint, CWnd::GetDC, CWnd::GetWindowDC,

CWnd::ReleaseDC,::GetDCEx

CWnd::GetDescendantWindow

CWnd* GetDescendantWindow( int nID , BOOL bOnlyPerm = FALSE ) const;

返 回 值

指 向 一 个 CWnd 对 象 的 指 针 , 如 果 没 有 找 到 子 窗 口 , 则 返 回 NULL 。

参 数

nID

指 定 了 要 获 取 的 控 件 或 子 窗 口 的 标 识 符 。

bOnlyPerm

指 定 了 返 回 的 窗 口 是 否 可 以 是 临 时 的 。 如 果 为 TRU E , 则 只 能 返 回 永 久性 的 窗 口 ; 如 果 为 FALSE , 则 该 函 数 可 以 返 回 临 时 窗 口 。 有 关 临 时 窗 口的 更 多 信 息 参 见 技 术 注 释 3 。

说 明

调 用 这 个 函 数 以 找 到 给 定 的 ID 所 指 定 的 后 代 窗 口 。 这 个 成 员 函 数 搜 索 整 个 子

窗 口 树 , 并 不 仅 是 直 接 子 窗 口 。

请 参 阅 CWnd::GetParentFrame, CWnd::IsChild, CWnd::GetDlgItem

CWnd::GetDesktopWindow

static CWnd* PASCAL GetDesktopWindow( );

返 回 值

标 识 了 W indows 的 桌 面 窗 口 。 这 个 指 针 可 能 是 临 时 的 , 因 此 不 能 被 保 存 以 供 将来 使 用 。

说 明

这 个 函 数 返 回 W indows 的 桌 面 窗 口 。 桌 面 窗 口 覆 盖 整 个 屏 幕 , 并 且 所 有 的 图 标和 其 它 窗 口 都 画 在 它 上 面 。

请 参 阅 ::GetDesktopWindow

CWnd::GetDlgCtrlID

int GetDlgCtrlID( ) const;

返 回 值

如 果 函 数 调 用 成 功 , 则 返 回 CWnd 子 窗 口 的 整 数 标 识 符 ; 否 则 返 回 0 。

说 明

返 回 任 何 子 窗 口 的 窗 口 或 控 件 ID 值 , 并 不 仅 是 对 话 框 的 控 件 。 由 于 顶 层 窗 口没 有 ID 值 , 因 此 如 果 CWnd 是 一 个 顶 层 窗 口 , 则 这 个 函 数 的 返 回 值 是 没 有 意义 的 。

请 参 见 ::GetDlgCtrlID

CWnd::GetDlgItem

CWnd* GetDlgItem( int nID ) const;

void CWnd::GetDlgItem( int nID , HWND* phWnd ) const;

返 回 值

指 向 给 定 的 控 件 或 子 窗 口 的 指 针 。 如 果 没 有 控 件 具 有 nID 给 出 的 整 数 ID , 则 返回 NULL 。

返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

参 数

nID phWnd

指 定 了 要 获 取 的 控 件 或 子 窗 口 的 标 识 符 。

指 向 子 窗 口 的 指 针 。

说 明

这 个 函 数 获 得 对 话 框 或 其 它 窗 口 中 指 定 控 件 或 子 窗 口 的 指 针 。 返 回 的 指 针 通 常被 强 制 转 换 为 nID 所 标 识 的 控 件 类 型 。

请 参 阅 CWnd::GetWindow, CWnd::GetDescendant W indow, CWnd::GetWindow, ::GetDlgItem

CWnd::GetDlgItemInt

UINT GetDlgItemInt( int nID , BOOL* lpTrans = NULL, BOOL bSigned = TRUE ) const;

返 回 值

指 定 了 对 话 框 项 的 文 本 经 转 换 的 值 。由 于 0 是 一 个 有 效 的 返 回 值 ,必 须 用 lpTrans

如 果 经 转 换 的 值 大 于 32767 ( 对 于 带 符 号 数 ) 或 65535 ( 对 于 无 符 号 数 ) , 则这 个 函 数 返 回 0 。

当 有 错 误 发 生 时 , 比 如 遇 到 了 非 数 字 字 符 或 超 出 了 最 大 数 范 围 , GetDlgItemInt 将 0 拷 贝 的 lpTrans 指 向 未 知 。 如 果 没 有 错 误 发 生 , 则 lpTrans 接 收 到 一 个 非 零值 。 如 果 lpTrans 为 NULL , GetDlgItemInt 不 提 出 错 误 警 告 。

参 数

nID

指 定 了 要 转 换 的 对 话 框 控 件 的 整 数 标 识 符 。

lpTrans

指 向 要 接 收 转 换 标 志 的 布 尔 。

bSigned

指 定 要 接 收 的 值 是 否 带 符 号 。

说 明

这 个 函 数 接 收 nID 标 识 的 控 件 的 文 本 。 它 将 给 定 对 话 框 中 指 定 控 件 的 文 本 转 换为 整 数 , 跳 过 文 本 开 始 部 分 的 空 格 并 转 换 十 进 制 数 字 。 当 它 到 达 文 本 的 末 尾 或者 遇 到 非 数 字 字 符 时 就 停 止 转 换 。

并 将 文 本 转 换 为 带 符 号 数 。 否 则 , 它 生 成 一 个 无 符 号 值 。它 向 控 件 发 送 一 个 W M _GETTEXT 消 息 。

请 参 阅 CWnd::GetDlgItemText, ::GetDlgItemInt

CWnd::GetDlgItemText

int GetDlgItemText( int nID , LPTSTR lpStr , int nMaxCount ) const; int GetDlgItemText( int nID , CString& rString ) const;

返 回 值

指 定 了 被 拷 贝 到 缓 冲 区 中 的 实 际 字 节 数 , 不 包 括 结 尾 的 null 字 符 。 如 果 没 有 拷贝 文 本 , 则 返 回 0 。

参 数

nID lpStr

指 定 了 要 获 取 其 标 题 的 控 件 的 整 数 标 识 符 。指 向 要 接 收 控 件 的 标 题 或 文 本 的 缓 冲 区 。

nMaxCount

指 定 了 要 拷 贝 到 lpStr 的 字 符 串 的 最 大 长 度 ( 以 字 节 为 单 位 ) 。 如 果 字 符串比 nMaxCount 要 长 , 它 将 被 截 断 。

rString

对 一 个 CString 对 象 的 引 用 。

说 明

调 用 这 个 函 数 以 获 得 与 对 话 框 中 的 控 件 相 关 的 标 题 或 文 本 。 GetDlgItemText 成员 函 数 将 文 本 拷 贝 到 lpStr 指 向 的 位 置 并 返 回 拷 贝 的 字 节 的 数 目 。

请 参 阅 CWnd::GetDlgItem, CWnd::GetDlgItemInt, ::GetDlgItemText, WM_GETTEXT

CWnd::GetDSCCursor

IUnknown * GetDSCCursor( );

返 回 值

指 向 数 据 源 控 件 定 义 的 游 标 的 指 针 。 MFC 会 为 这 个 指 针 调 用 AddRef 函 数 。

说 明

调 用 这 个 函 数 以 获 取 游 标 的 指 针 , 该 游 标 是 用 数 据 源 控 件 的 DataSource , UserNam e, Password 和 SQL 属 性 定 义 的 。 可 以 使 用 返 回 的 指 针 来 设 置 复 杂 数据 绑 定 控 件 的 ICursor 属 性 , 如 数 据 绑 定 网 格 控 件 。 数 据 源 控 件 将 不 会 被 激 活 , 直 到 第 一 个 绑 定 控 件 请 求 了 游 标 。 这 种 情 况 可 能 发 生 在 调 用 GetDSCCursor 时 , 也 可 能 是 被 MFC 绑 定 管 理 器 激 活 的 。 在 这 两 种 情 况 下 , 你 都 可 以 调 用GetDSCCursor , 然 后 用 返 回 的 IUnknown 指 针 调 用 Release 。 被 激 活 后 数 据 源 控件 会 试 图 与 数 据 源 相 连 接 。 返 回 的 指 针 应 该 在 下 面 的 上 下 文 中 使 用 :

BOOL CMyDlg::OnInitDialog()

{

// 找 到 对 话 框 中 的 子 控 件

CWnd* pDSC = GetDlgItem(IDC_REMOTEDATACONTROL);

CDBListBox* pList = (CDBListBox*) GetDlgItem(IDC_DBLISTBOX);

// 告 诉 MFC 的 绑 定 管 理 器 我 们 已 经 把 DISPID 3

// 与 数 据 源 控 件 相 绑 定 了 。

pList->BindProperty(0x3, pDSC);

// 告 诉 列 表 框 把 哪 个 域 作 为 绑 定 字 段 。

pList->SetBoundColumn(_T("CourseID"));

// 告 诉 列 表 框 把 它 的 内 容 转 移 到 哪 个 游 标 和 字 段 。

pList->SetListField(_T("CourseID")); IPUNKNOWN *pcursor = pDSC->GetDSCCursor();

...

if (!pcursor)

{

// 指 针 没 有 成 功 地 分 配 , 返 回 FALSE 。return FALSE;

}

// 成 功 地 返 回 了 指 针

pList->SetRowSource(pcursor);

...

pcursor->Release(); return TRUE;

}

请 参 阅 CWnd::BindDefaultProperty, CWnd::BindProperty

CWnd::GetExStyle

DWORD GetExStyle( ) const;

返 回 值

窗 口 的 扩 展 风 格 。

请 参 阅 CWnd::GetStyle, ::GetWindowLong

CWnd::GetFocus

static CWnd* PASCAL GetFocus( );

返 回 值

指 向 拥 有 当 前 焦 点 的 窗 口 的 指 针 , 如 果 没 有 焦 点 窗 口 , 则 返 回 NULL 。这 个 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 获 得 指 向 当 前 拥 有 输 入 焦 点 的 CWnd 的 指 针 。

请 参 阅 CWnd::GetActiveWindow, CWnd::GetCapture, CWnd::SetFocus, ::GetFocus

CWnd::GetFont

CFont* GetFont( ) const;

返 回 值

指 向 一 个 CFont 对 象 的 指 针 , 其 中 包 含 了 当 前 的 字 体 。这 个 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

获 得 窗 口 的 当 前 字 体 。

请 参 阅 CWnd::SetFont, WM_GETFONT, CFont

CWnd::GetForegroundWindow

static CWnd* PASCAL GetForegroundWindow( );

返 回 值

指 向 前 台 窗 口 的 指 针 。 这 可 能 是 一 个 临 时 的 CWnd 对 象 。

说 明

返 回 指 向 前 台 窗 口 ( 用 户 正 在 其 中 工 作 的 窗 口 ) 的 指 针 。 前 台 窗 口 仅 适 用 于 顶层 窗 口 ( 框 架 窗 口 或 对 话 框 ) 。

请 参 阅 CWnd::SetForegroundWindow

CWnd::GetIcon

HICON GetIcon( BOOL bBigIcon ) const;

返 回 值

指 向 一 个 图 标 的 句 柄 。 如 果 不 成 功 , 则 返 回 NULL 。

参 数

bBigIcon

如 果 为 TRU E , 则 指 定 了 32 × 32 像 素 的 图 标 ; 如 果 为 FALSE , 则 指 定了 16 × 16 像 素 的 图 标 。

说 明

调 用 这 个 函 数 以 获 得 大 图 标( 32 × 32 ) 或 小 图 标( 16 × 16 )的句柄,由 bBigIcon

指 定 。

请 参 阅 SetIcon

CWnd::GetLastActivePopup

CWnd* GetLastActivePopup( ) const;

返 回 值

标 识 了 最 近 激 活 的 弹 出 窗 口 。 如 果 遇 到 了 下 列 情 况 , 则 返 回 值 可 能 是 这 个 窗 口本 身 :

  • 该 窗 口 是 最 后 被 激 活 的

  • 这 个 窗 口 不 拥 有 任 何 弹 出 窗 口

  • 这 个 窗 口 不 是 顶 层 窗 口 或 被 其 它 窗 口 所 拥 有

这 个 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 确 定 CWnd 拥 有 的 哪 个 弹 出 窗 口 是 最 后 被 激 活 的 。

请 参 阅 ::GetLastActivePopup

CWnd::GetMenu

CMenu* GetMenu( ) const;

返 回 值

标 识 了 菜 单 。 如 果 CWnd 没 有 菜 单 , 则 返 回 值 为 NULL 。如果 CWnd 是 子 窗 口 , 则 返 回 值 没 有 定 义 。

返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 获 得 窗 口 的 菜 单 指 针 。 这 个 函 数 能 对 子 窗 口 使 用 , 因 为 它 们 没 有 菜 单 。

请 参 阅 ::GetMenu

CWnd::GetNextDlgGroupItem

CWnd* GetNextDlgGroupItem( CWnd* pWndCtl , BOOL bPrevious = FALSE ) const;

返 回 值

如 果 这 个 成 员 函 数 执 行 成 功 , 则 返 回 一 组 中 前 一 个 ( 或 下 一 个 ) 控 件 的 指 针 。返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

参 数

pWndCtl

标 识 了 用 作 搜 索 起 点 的 控 件 。

bPrevious

指 定 这 个 函 数 如 何 在 对 话 框 的 控 件 组 中 搜 索 。 如 果 为 TRUE , 则 该 函 数搜 索 组 中 的 前 一 个 控 件 ; 如 果 为 FALSE , 则 搜 索 组 中 的 下 一 个 控 件 。

这 个 函 数 在 对 话 框 的 控 件 组 内 搜 索 前 一 个 ( 或 下 一 个 ) 控 件 。 一 组 控 件 从 用WS_GROUP 风 格 创 建 的 控 件 开 始 , 而 以 最 后 一 个 没 有 用 WS_GROUP 风 格 创建 的 控 件 结 束 。

在 缺 省 情 况 下 , GetNextDlgGroupItem 成 员 函 数 返 回 组 中 下 一 个 控 件 的 指 针 。如 果 pWndCtl 指 定 了 组 中 的 第 一 个 控 件 , 并 且 bPrevious 为 TRUE , 则GetNextDlgGroupItem 返 回 组 中 最 后 一 个 控 件 的 指 针 。

请 参 阅 CWnd::GetNextDlgTabItem, ::GetNextDlgGroupItem

CWnd::GetNextDlgTabItem

CWnd* GetNextDlgTabItem( CWnd* pWndCtl , BOOL bPrevious = FALSE ) const;

返 回 值

如 果 这 个 成 员 函 数 执 行 成 功 ,则 返 回 指 向 具 有 WS_TABSTOP 风 格 的 前 一 个( 或下 一 个 ) 控 件 。

返 回 的 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

pWndCtl

标 识 了 用 作 搜 索 起 点 的 控 件 。

bPrevious

指 定 这 个 函 数 如 何 在 对 话 框 中 搜 索 。 如 果 为 TRUE , 则 这 个 函 数 在 对 话框 中 搜 索 前 一 个 控 件 ; 如 果 为 FALSE , 则 搜 索 下 一 个 控 件 。

说 明

这 个 函 数 获 得 用 WS_TABSTOP 风 格 创 建 的 第 一 个 控 件 , 并 且 它 位 于 指 定 的 控件 之 前 ( 或 之 后 ) 。

请 参 阅 CWnd::GetNextDlgGroupItem, ::GetNextDlgTabItem

CWnd::GetNextWindow

CWnd* GetNextWindow( UINT nFlag = GW_HWNDNEXT ) const;

返 回 值

如 果 这 个 成 员 函 数 执 行 成 功 , 则 返 回 窗 口 管 理 器 中 的 下 一 个 ( 或 前 一 个 ) 窗 口 。返 回 的 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

nFlag

指 定 了 该 函 数 是 返 回 下 一 个 窗 口 还 是 前 一 个 窗 口 的 指 针 。 它 可 以 是GW_HWNDNEXT , 表 明 返 回 窗 口 管 理 器 列 表 中 CWnd 对 象 之 后 的 窗 口 , 或 者 是 GW_HWNDPREV , 返 回 窗 口 管 理 器 列 表 中 的 前 一 个 窗 口 。

说 明

这 个 函 数 在 窗 口 管 理 器 列 表 中 搜 索 下 一 个 ( 或 前 一 个 ) 窗 口 。 窗 口 管 理 器 的 列表 中 包 含 了 所 有 顶 层 窗 口 、 它 们 的 相 关 子 窗 口 和 任 意 子 窗 口 的 子 窗 口 。

如 果 CWnd 是 一 个 顶 层 窗 口 , 则 函 数 搜 索 下 一 个 ( 或 前 一 个 ) 顶 层 窗 口 ; 如 果

CWnd 是 一 个 子 窗 口 , 则 函 数 搜 索 下 一 个 ( 或 前 一 个 ) 子 窗 口 。

请 参 阅 ::GetNextWindow

CWnd::GetOpenClipboardWindow

static CWnd* PASCAL GetOpenClipboardWindow( );

返 回 值

如 果 函 数 执 行 成 功 , 则 返 回 当 前 打 开 剪 贴 板 的 窗 口 的 句 柄 ; 否 则 返 回 NULL 。

这 个 函 数 获 得 当 前 打 开 剪 贴 板 的 窗 口 的 句 柄 。

请 参 阅 CWnd::GetClipboardOwner, CWnd::GetClipboardViewer, CWnd::OpenClipboard,::GetOpenClipboardWindow

CWnd::GetOwner

CWnd* GetOwner( ) const;

返 回 值

指 向 CWnd 对 象 的 指 针 。

说 明

这 个 函 数 获 得 窗 口 的 拥 有 者 的 指 针 。 如 果 窗 口 没 有 拥 有 者 , 则 缺 省 地 返 回 父 窗口 对 象 的 指 针 。 注 意 在 拥 有 者 和 被 拥 有 者 之 间 的 关 系 与 父 子 关 系 在 几 个 重 要 方面 的 差 别 。 例 如 , 具 有 父 窗 口 的 窗 口 被 限 制 在 父 窗 口 的 客 户 区 内 , 但 是 被 拥 有的 窗 口 可 以 被 画 在 桌 面 上 的 任 何 位 置 。

这 个 函 数 中 的 拥 有 概 念 与 GetWindow 中 的 拥 有 概 念 不 同 。

请 参 阅 CWnd::GetParent, CWnd::SetOwner

CWnd::GetParent

CWnd* GetParent( ) const;

返 回 值

如 果 这 个 成 员 函 数 执 行 成 功 , 则 返 回 父 窗 口 指 针 ; 否 则 返 回 值 为 NULL , 表 明发 生 了 错 误 或 没 有 父 窗 口 。

返 回 的 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

说 明

调 用 这 个 函 数 以 获 得 子 窗 口 的 父 窗 口 ( 如 果 有 ) 的 指 针 。 GetParent 函 数 返 回 直接 父 窗 口 的 指 针 。 与 此 不 同 , GetParentOwner 函 数 返 回 不 是 子 窗 口 ( 不 具 有WS_CHILD 风 格 ) 的 最 直 接 父 窗 口 或 拥 有 者 窗 口 的 指 针 。 如 果 你 在 子 窗 口 中 还有 子 窗 口 , 则 GetParent 和 GetParentOwner 返 回 不 同 的 结 果 。

请 参 阅 CWnd::GetParentOwner, CWnd::GetOwner, CWnd::SetOwner, CWnd::SetParent,::GetParent

CWnd::GetParentFrame

CFrameWnd* GetParentFrame( ) const;

返 回 值

如 果 成 功 , 则 返 回 框 架 窗 口 的 指 针 ; 否 则 返 回 NULL 。

说 明

调 用 这 个 函 数 以 获 得 父 框 架 窗 口 。 这 个 成 员 函 数 向 上 搜 索 父 窗 口 链 直 到 找 到 一个 CFrameWnd ( 或 其 派 生 类 ) 对 象 。

请 参 阅 CWnd::GetDescendant W indow, CWnd::GetParent, CFrameWnd::GetActiveView

CWnd::GetParentOwner

CWnd* GetParentOwner( ) const;

返 回 值

指 向 一 个 CWnd 对 象 的 指 针 。 如 果 CWnd 对 象 没 有 与 一 个 句 柄 连 接 , 则 创 建 一

个 临 时 的 CWnd 对 象 并 与 之 连 接 。 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

说 明

调 用 这 个 成 员 函 数 以 获 得 子 窗 口 的 父 窗 口 或 拥 有 这 窗 口 的 指 针 。GetParentOwner 返 回 不 是 子 窗 口 ( 不 具 有 WS_CHILD 风 格 ) 的 最 直 接 父 窗 口 或 拥 有 者 窗 口 的指 针 。 可 以 用 SetOwner 来 设 置 当 前 的 拥 有 者 窗 口 。 在 缺 省 情 况 下 , 一 个 窗 口的 父 窗 口 就 是 它 的 拥 有 者 。

与 此 不 同 , GetParent 函 数 返 回 直 接 父 窗 口 的 指 针 ,而 不 管 它 是 否 是 一 个 子 窗 口 。如 果 你 在 子 窗 口 内 还 有 子 窗 口 , 则 GetParen 和 GetParentOwner 返 回 不 同 的 结果 。

请 参 阅 CWnd::GetParent, CWnd::GetOwner, CWnd::SetOwner, CWnd::SetParent, ::GetParent

CWnd::GetProperty

void GetProperty( DISPID dwDispID , VARTYPE vtProp , void* pvProp )const;

参 数

dwDispID

标 识 要 获 取 的 属 性 。 这 个 值 通 常 是 由 组 件 廊 提 供 的 。

vtProp

指 定 了 要 获 取 的 属 性 类 型 。 可 能 的 取 值 参 见

COleDispatchDriver::InvokeHelper 中 的 说 明 部 分 。

pvProp

变 量 的 地 址 , 该 变 量 将 接 收 属 性 值 。 它 必 须 与 vtProp 指 定 的 类 型 匹 配 。

说 明

调 用 这 个 成 员 函 数 以 获 得 dwDispID 所 指 定 的 OLE 控 件 属 性 。 GetProperty 通 过

pvProp 返 回 该 值 。

注意 这 个 函 数 只 能 在 代 表 OLE 控 件 的 CWnd 对 象 内 调 用 。

请 参 阅 CWnd::InvokeHelper, COleDispatchDriver, CWnd::CreateControl

CWnd::GetSafeHwnd

HWND GetSafeHwnd( ) const;

返 回 值

返 回 窗 口 的 句 柄 。 如 果 CWnd 对 象 没 有 与 一 个 窗 口 连 接 或 它 使 用 的 CWnd 指 针为 NULL , 则 返 回 NULL 。

CWnd::GetSafeOwner

CWnd* PASCAL GetSafeOwner( CWnd* pParen t, HWND* pWndTop );

返 回 值

指 向 给 定 窗 口 的 安 全 拥 有 者 的 指 针 。

参 数

pParent

指 向 父 窗 口 的 CWnd 对 象 的 指 针 。

pWndTop

指 向 当 前 位 于 顶 部 的 窗 口 的 指 针 。 可 能 为 NULL 。

说 明

调 用 这 个 成 员 函 数 以 获 得 拥 有 者 窗 口 , 可 以 被 用 于 对 话 框 或 其 它 模 式 窗 口 。 安全 拥 有 者 是 pParentWnd 的 第 一 个 不 是 子 窗 口 的 父 窗 口 。 如 果 pParentWnd 为NULL , 则 线 程 的 主 窗 口 ( 可 以 通 过 AfxGetMainWnd 获 得 ) 被 用 于 找 到 一 个 拥有 者 。

注 意 框 架 本 身 利 用 这 个 函 数 以 确 定 没 有 指 定 拥 有 者 的 对 话 框 和 属 性 表

的 正 确 拥 有 者 窗 口 。

请 参 阅 AfxGetMainWnd

CWnd::GetScrollBarCtrl

virtual CScrollBar* GetScrollBarCtrl( int nBar ) const;

返 回 值

一 个 子 滚 动 条 控 件 。 如 果 没 有 , 则 返 回 NULL 。

参 数

nBar

指 定 了 滚 动 条 的 类 型 。 这 个 参 数 可 以 取 如 下 值 :

  • SB_HORZ 获 得 水 平 滚 动 条 的 位 置 。

  • SB_VERT 获 得 垂 直 滚 动 条 的 位 置 。

说 明

调 用 这 个 成 员 函 数 以 获 取 指 定 的 子 滚 动 控 件 或 分 隔 窗 口 的 指 针 。

如 果 滚 动 条 是 在 创 建 窗 口 的 时 候 指 定 了 WS_HSCROLL 或 WS_VSCROLL 位 而

创 建 的 , 则 这 个 成 员 函 数 不 对 滚 动 条 进 行 操 作 。 CWnd 对 这 个 函 数 的 实 现 仅 简单 地 返 回 NULL 。 派 生 类 , 例 如 CView , 实 现 了 描 述 的 功 能 。

请 参 阅 CWnd::EnableScrollBarCtrl

CWnd::GetScrollInfo

BOOL GetScrollInfo( int nBar, LPSCROLLINFO lpScrollInfo , UINT nMask = SIF_ALL );

返 回 值

如 果 这 个 消 息 获 得 了 任 何 值 , 则 返 回 值 为 TRUE ; 否 则 返 回 值 为 FALSE 。

参 数

nBar

指 定 了 滚 动 条 是 一 个 控 件 还 是 窗 口 的 非 客 户 区 的 一 部 分 。 如 果 它 是 非 客户 区 的 一 部 分 , 则 nBar 还 指 明 滚 动 条 是 水 平 的 、 垂 直 的 , 还 是 都 有 。 它必 须 是 下 列 值 之 一 :

  • SB_BOTH 指 定 了 窗 口 的 水 平 和 垂 直 滚 动 条 。

  • SB_HORZ 指 定 了 窗 口 的 水 平 滚 动 条 。

    • SB_VERT 指 定 了 窗 口 的 垂 直 滚 动 条 。

lpScrollInfo

指 向 一 个 SCROLLINFO 结 构 的 指 针 。 有 关 这 个 结 构 的 更 多 信 息 参 见

W in32 SDK 程 序 员 参 考 。

nMask

指 定 了 要 获 取 的 滚 动 条 参 数 。 缺 省 值 指 定 了 SIF_PAGE , SIF_POS , SIF_TRACKPOS 和 SIF_RANGE 的 组 合 。 有 关 nMask 取 值 的 更 多 信 息 参见 SCROLLINFO 。

说 明

调 用 这 个 函 数 以 获 得 SCROLLINFO 结 构 为 滚 动 条 维 护 的 信 息 。 GetScrollInfo

使 应 用 程 序 能 够 使 用 32 位 的 滚 动 位 置 值 。

SCROLLINFO 结 构 中 包 含 了 有 关 滚 动 条 的 信 息 , 包 括 最 小 和 最 大 滚 动 位 置 , 页 面 大 小 以 及 滚 动 块 的 位 置 。 有 关 改 变 这 个 结 构 的 缺 省 值 的 信 息 参 见 《 W in32 SDK 程 序 员 参 考 》 中 的 SCROLLINFO 结 构 主 题 。

指 明 滚 动 条 位 置 的 MFC Windows 消 息 处 理 函 数 CWnd::OnHScroll 和CWnd::OnVScroll 只 提 供 位 置 数 据 中 的 16 位 。 GetScrollInfo 和 SetScrollInfo 提供 了 滚 动 条 位 置 数 据 的 32 位 值 。 因 此 , 应 用 程 序 在 处 理 C Wnd::OnHScroll 或CWnd::OnVScroll 的 时 候 可 以 调 用 GetScrollInfo 以 获 得 32 位 的 滚 动 条 位 置 数

据 。

请 参 阅 CScrollBar::GetScrollInfo, CWnd::SetScrollInfo, C W nd::SetScrollPos, CWnd::OnVScroll, CWnd::OnHScroll, SCROLLINFO

CWnd::GetScrollLimit

int GetScrollLimit( int nBar );

返 回 值

如 果 函 数 成 功 , 则 返 回 指 定 了 滚 动 条 的 最 大 位 置 的 值 ; 否 则 返 回 0 。

参 数

nBar

指 定 了 滚 动 条 的 类 型 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • SB_HORZ 获 得 水 平 滚 动 条 的 滚 动 限 制 值 。

  • SB_VERT 获 得 垂 直 滚 动 条 的 滚 动 限 制 值 。

说 明

调 用 这 个 成 员 函 数 以 获 得 滚 动 条 的 最 大 滚 动 位 置 。

CWnd::GetScrollPos

int GetScrollPos( int nBar ) const;

返 回 值

如 果 成 功 , 则 返 回 滚 动 条 中 滚 动 块 的 当 前 位 置 ; 否 则 返 回 0 。

参 数

nBar

指 定 了 要 检 查 的 滚 动 条 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • SB_HORZ 获 取 水 平 滚 动 条 的 位 置 。

  • SB_VERT 获 取 垂 直 滚 动 条 的 位 置 。

说 明

这 个 函 数 获 得 滚 动 条 的 滚 动 块 的 当 前 位 置 。 当 前 位 置 是 一 个 相 对 值 , 依 赖 于 当前 的 滚 动 范 围 。 例 如 , 如 果 滚 动 范 围 是 50 到 100 , 并 且 滚 动 块 位 于 滚 动 条 的 中间 , 则 当 前 位 置 为 75 。

CWnd::GetScrollRange

void GetScrollRange( int nBar , LPINT lpMinPos , LPINT lpMaxPos ) const;

参 数

nBar

指 定 了 要 检 查 的 滚 动 条 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • SB_HORZ 获 得 水 平 滚 动 条 的 当 前 位 置 。

  • SB_VERT 获 得 垂 直 滚 动 条 的 当 前 位 置 。

lpMinPos

指 向 一 个 整 数 变 量 , 该 变 量 将 接 收 最 小 位 置 。

lpMaxPos

指 向 一 个 整 数 变 量 , 该 变 量 将 接 收 最 大 位 置 。

说 明

这 个 函 数 将 指 定 的 滚 动 条 的 当 前 最 大 和 最 小 滚 动 位 置 拷 贝 到 lp M inPos 和

lp M axPos 所 指 向 的 位 置 。 如 果 CWnd 没 有 滚 动 条 , 则 GetScrollRange 成 员 函 数

标 准 滚 动 条 的 范 围 是 0 到 100 。滚 动 条 控 件 的 缺 省 范 围 是 空 的( 两 个 值 都 是 0 )。

请 参 阅 ::GetScrollRange

CWnd::GetStyle

DWORD GetStyle( ) const;

返 回 值

窗 口 的 风 格 。

请 参 阅 ::GetWindowLong

CWnd::GetSystemMenu

CMenu* GetSystemMenu( BOOL bRevert ) const;

返 回 值

如 果 bRevert 为 FALSE , 则 标 识 了 控 制 菜 单 的 一 个 拷 贝 ; 如 果 为 TRUE , 则 返回 值 没 有 定 义 。

参 数

bRevert

指 定 要 采 取 的 动 作 。 如 果 bRevert 为 FALSE , 则 GetSystemMenu 返 回 当前 使 用 的 控 制 菜 单 的 一 个 拷 贝 的 句 柄 。 这 个 拷 贝 最 初 与 控 制 菜 单 一 样 , 但 是 可 以 被 修 改 。 如 果 bRevert 为 TRU E , GetSystemMenu 将 控 制 菜 单 复位 到 原 来 的 状 态 。 以 前 控 制 菜 单 可 能 发 生 的 变 化 都 被 销 毁 。 这 时 返 回 值没 有 定 义 。

说 明

这 个 函 数 允 许 应 用 程 序 访 问 控 制 菜 单 , 用 于 拷 贝 和 修 改 。

任 何 不 使 用 GetSystemMenu 以 生 成 它 自 己 的 控 制 菜 单 拷 贝 的 窗 口 将 接 收 标 准 的控 制 菜 单 。

GetSystemMenu 成 员 函 数 返 回 的 指 针 可 以 在 CMenu:: AppendMenu ,

CMenu::InsertMenu 或 CMenu::ModifyMenu 中 使 用 , 用 于 改 变 控 制 菜 单 。

控 制 菜 单 中 最 初 包 含 了 用 不 同 的 ID 标 识 的 项 , 如 SC_CLOSE , SC_MOVE 和SC_SIZE 。 控 制 菜 单 中 的 项 产 生 WM_SYSCOMMAND 消 息 。 所 有 的 预 定 义 控制 菜 单 项 都 具 有 大 于 0xF000 的 ID 值 。 如 果 应 用 程 序 在 控 制 菜 单 中 加 入 了 项 ,

W indows 可 能 自 动 使 标 准 控 制 菜 单 上 的 项 变 灰 。 CWnd 可 以 通 过 响 应WM_INITMENU 消 息 来 执 行 它 自 己 的 选 中 或 变 灰 操 作 , 这 个 消 息 是 在 任 何 菜单 要 被 显 示 之 前 发 送 的 。

请 参 阅 CMenu::AppendMenu, CMenu::InsertMenu, CMenu::ModifyMenu, ::GetSystemMenu

CWnd::GetTopLevelFrame

CFrameWnd* GetTopLevelFrame( ) const;

返 回 值

标 识 了 窗 口 的 顶 层 框 架 窗 口 。

返 回 的 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

说 明

调 用 这 个 成 员 函 数 以 获 得 窗 口 的 顶 层 框 架 窗 口 , 如 果 有 的 话 。 如 果 CWnd 没 有与 之 相 连 的 窗 口 , 或 者 它 的 顶 层 父 窗 口 不 是 CFrameWnd 的 派 生 类 对 象 , 则 这个 函 数 返 回 NULL 。

CWnd::GetTopLevelOwner

CWnd* GetTopLevelOwner( ) const;

返 回 值

标 识 了 顶 层 窗 口 。 返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

调 用 这 个 函 数 以 获 得 顶 层 窗 口 。 顶 层 窗 口 是 桌 面 的 子 窗 口 。 如 果 CWnd 没 有 与之 相 连 的 窗 口 , 则 这 个 函 数 返 回 NULL 。

请 参 阅 CWnd::GetTopLevelFrame, CWnd::GetTopLevelParent

CWnd::GetTopLevelParent

CWnd* GetTopLevelParent( ) const;

返 回 值

标 识 了 窗 口 的 顶 层 父 窗 口 。

返 回 的 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

说 明

调 用 这 个 函 数 以 获 得 窗 口 的 顶 层 父 窗 口 。 GetTopLevelParent 与G etTopLevelFrame 和 GetTopLevelOwner 类 似 , 但 是 , 它 忽 略 被 设 为 当 前 拥 有者 窗 口 的 值 。

请 参 阅 CWnd::GetTopLevelOwner, CWnd::GetTopLevelFrame, CWnd::GetOwner, CWnd::SetOwner

CWnd::GetTopWindow

CWnd* GetTopWindow( ) const;

返 回 值

标 识 了 CWnd 的 子 窗 口 链 表 中 的 顶 层 子 窗 口 。 如 果 没 有 子 窗 口 , 则 返 回 值 为

NULL 。

返 回 值 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 搜 索 属 于 CWnd 的 顶 层 子 窗 口 。 如 果 CWnd 没 有 子 窗 口 , 这 个 函 数 返回 NULL 。

请 参 阅 ::GetTopWindow

CWnd::GetUpdateRect

BOOL GetUpdateRect( LPRECT lpRec t, BOOL bErase = FALSE );

返 回 值

指 定 了 更 新 区 域 的 状 态 。 如 果 更 新 区 域 不 为 空 , 则 返 回 值 为 非 零 值 ; 否 则 为 0 。如 果 lpRect 参 数 被 设 为 NULL , 且 存 在 更 新 区 域 , 则 返 回 非 零 值 ; 否 则 为 0 。

参 数

lpRect

指 向 一 个 CRect 对 象 或 RECT 结 构 , 将 被 用 于 接 收 包 含 更 新 区 域 的 客 户坐 标 。

bErase

将 这 个 参 数 设 为 NULL 以 确 定 在 CWnd 中 是 否 存 在 更 新 区 域 。如 果 lpRect 为 NULL , 且 存 在 更 新 区 域 , 则 GetUpdateRect 成 员 函 数 返 回 非 零 值 ; 如 果 不 存 在 , 则 返 回 0 。 这 就 提 供 了 一 种 方 法 , 用 来 确 定 WM_PAINT 是否 是 一 个 无 效 区 域 引 起 的 。 在 W indows 3.0 或 更 早 的 版 本 中 不 要 将 这 个参 数 设 为 NULL 。

指 定 更 新 区 域 中 的 背 景 是 否 要 被 擦 除 。

说 明

这 个 函 数 获 得 完 全 封 闭 更 新 区 域 的 最 小 矩 形 的 坐 标 。 如 果 CWnd 是 用CS_OWNDC 创 建 的 , 并 且 映 射 模 式 不 是 MM_TEX T , 则 GetUpdateRect 成 员函 数 用 逻 辑 坐 标 给 出 该 矩 形 ; 否 则 GetUpdateRect 用 客 户 坐 标 给 出 矩 形 。 如 果不 存 在 更 新 区 域 , 则 GetUpdateRect 将 矩 形 设 为 空 ( 所 有 的 坐 标 都 被 设 为 0 )。

bErase 成 员 指 定 了 GetUpdateRect 是 否 要 擦 除 更 新 区 域 的 背 景 。 如 果 bErase 为TRU E , 并 且 更 新 区 域 不 为 空 , 则 背 景 将 被 擦 除 。 为 了 擦 除 背 景 , GetUpdateRect 发 送 一 条 WM_ERASEBKGND 消 息 。

BeginPaint 成 员 函 数 获 得 的 更 新 矩 形 与 GetUpdateRect 成 员 函 数 获 得 的 矩 形 相同 。

BeginPaint 成 员 函 数 自 动 使 更 新 区 域 有 效 , 因 此 任 何 在 BeginPaint 之 后 立 即 调

用 的 GetUpdateRect 都 返 回 一 个 空 的 更 新 区 域 。

请 参 阅 CWnd::BeginPaint, ::GetUpdateRect, CWnd::OnPaint, CWnd::RedrawWindow

CWnd::GetUpdateRgn

int GetUpdateRgn( CRgn* pRgn , BOOL bErase = FALSE );

返 回 值

指 定 了 一 个 短 整 数 标 志 , 标 识 了 结 果 区 域 的 类 型 。 该 值 可 能 为 下 列 值 之 一 :

  • SIMPLEREGION 区 域 没 有 重 叠 边 界 。

  • COMPLEXREGION 区 域 具 有 重 叠 边 界 。

  • NULLREGION 区 域 中 是 空 的 。

  • ERROR 没 有 创 建 区 域 。

参 数

pRgn bErase

标 识 了 更 新 区 域 。

指 定 了 背 景 是 否 要 被 擦 除 , 以 及 是 否 要 画 出 子 窗 口 的 非 客 户 区 。 如 果 该值为 FALSE , 则 不 作 绘 图 操 作 。

说 明

这 个 函 数 在 pRgn 标 识 的 区 域 中 获 得 更 新 区 域 。 区 域 的 坐 标 是 相 对 于 左 上 角( 客户 坐 标 ) 的 。

BeginPaint 成 员 函 数 自 动 使 更 新 区 域 有 效 , 因 此 任 何 紧 接 在 BeginPaint 后 面 的

GetUpdateRgn 调 用 接 收 到 空 的 更 新 区 域 。

请 参 阅 CWnd::BeginPaint, ::GetUpdateRgn

CWnd::GetWindow

CWnd* GetWindow( UINT nCmd ) const;

返 回 值

返 回 要 求 的 窗 口 指 针 ; 如 果 没 有 , 则 返 回 NULL 。返 回 的 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。

参 数

nCmd

指 定 了 CWnd 和 返 回 的 窗 口 之 间 的 关 系 。 可 以 取 下 列 值 之 一 :

  • GW_CHILD 标 识 了 CWnd 的 第 一 个 子 窗 口 。

  • GW_HWNDFIRST 如 果 CWnd 是 一 个 子 窗 口 , 则 返 回 它 的 第 一

    个 兄弟 窗 口 ; 否 则 返 回 列 表 中 的 第 一 个 顶 层 窗 口 。

  • GW_HWNDLAST 如 果 CWnd 是 一 个 子 窗 口 , 则 返 回 最 后 一 个 兄

窗 口 ; 否 则 返 回 列 表 中 的 最 后 一 个 顶 层 窗 口 。

  • GW_HWNDNEXT 返 回 窗 口 管 理 器 中 的 下 一 个 窗 口 。

  • GW_HWNDPREV 返 回 窗 口 管 理 器 中 的 前 一 个 窗 口 。

  • GW_OWNER 标 识 了 CWnd 的 拥 有 者 。

请 参 阅 CWnd::GetParent, CWnd::GetNextWindow, ::GetWindow

CWnd::GetWindowContextHelpId

DWORD GetWindowContextHelpId( ) const;

返 回 值

帮 助 上 下 文 标 识 符 。 如 果 窗 口 没 有 帮 助 上 下 文 , 则 返 回 0 。

说 明

调 用 这 个 函 数 以 获 得 与 窗 口 相 关 的 帮 助 上 下 文 标 识 符 , 如 果 有 的 话 。

CWnd::GetWindowDC

CDC* GetWindowDC( );

返 回 值

如 果 这 个 函 数 成 功 , 则 返 回 给 定 窗 口 的 显 示 环 境 ; 否 则 返 回 NULL 。

返 回 的 指 针 可 能 是 临 时 的 , 不 应 保 存 以 供 将 来 使 用 。 在 每 次 成 功 地 调 用 了

GetWindowDC 之 后 , 必 须 调 用 ReleaseDC 。

说 明

这 个 函 数 获 得 整 个 窗 口 的 显 示 环 境 , 包 括 标 题 条 、 菜 单 和 滚 动 条 。 窗 口 的 显 示环 境 允 许 程 序 在 CWnd 的 任 何 地 方 绘 图 , 因 为 该 环 境 的 原 点 是 在 CWnd 的 左 上角 , 而 不 是 客 户 区 的 左 上 角 。

每 次 获 得 环 境 的 时 候 都 给 它 赋 以 缺 省 的 属 性 。 以 前 的 设 置 将 会 丢 失 。

GetWindowDC 用 于 在 CWnd 的 非 客 户 区 实 现 特 殊 的 绘 图 效 果 。 不 推 荐 在 任 何

窗 口 的 非 客 户 区 绘 图 。

可 以 利 用 W indows 的 GetSystemMetrics 函 数 来 获 得 非 客 户 区 的 不 同 部 分 的 大小 , 如 标 题 条 、 菜 单 和 滚 动 条 。

在 绘 图 结 束 以 后 , 必 须 调 用 ReleaseDC 成 员 函 数 以 释 放 显 示 环 境 。 如 果 没 有 成功 地 释 放 显 示 环 境 , 则 可 能 会 严 重 影 响 应 用 程 序 要 求 的 绘 图 , 因 为 在 同 一 时 刻能 打 开 的 显 示 设 备 环 境 的 数 目 是 有 限 的 。

请 参 阅 ::GetSystemMetrics, CWnd::ReleaseDC, ::GetWindowDC, CWnd::GetDC, CWindowDC

CWnd::GetWindowPlacement

BOOL GetWindowPlacement( WINDOWPLACEMENT* lpwndpl ) const;

返 回 值

如 果 函 数 执 行 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpwndpl

指 向 一 个 W INDOWPLACEMENT 结 构 , 用 于 接 收 显 示 状 态 和 位 置 信 息 。

说 明

这 个 函 数 获 得 窗 口 的 显 示 状 态 和 正 常 ( 复 原 的 ) 、 最 小 化 和 最 大 化 的 位 置 。

这 个 函 数 获 得 的 W INDOWPLACEMENT 结 构 中 的 flags 成 员 总 是 0 。如 果 CWnd 是 最 大 化 的 , 则 W INDOWPLACEMENT 的 showCmd 成 员 为SW_SHOWMAXIMIZED 。如 果 窗 口 是 最 小 化 的 ,则 为 SW_SHOWMINIMIZED ; 否 则 它 为 S W _SHOWNORMAL 。

请 参 阅 CWnd::SetWindowPlacement, ::GetWindowPlacement

CWnd::GetWindowRect

void Get W indowRect( LPRECT lpRect ) const;

参 数

lpRect

指 向 一 个 CRect 对 象 或 RECT 结 构 , 用 于 接 收 左 上 角 和 右 下 角 的 屏 幕 坐标。

说 明

这 个 函 数 将 CWnd 对 象 的 边 界 矩 形 的 大 小 拷 贝 到 lpRect 所 指 向 的 结 构 中 。 大 小

是 用 相 对 于 显 示 器 屏 幕 左 上 角 的 屏 幕 坐 标 给 出 的 , 其 中 包 括 了 标 题 条 , 边 框 和滚 动 条 的 大 小 , 如 果 有 的 话 。

请 参 阅 CWnd::GetClientRect, CWnd::MoveWindow, CWnd::SetWindowPos,

::GetWindowRect

CWnd::GetWindowRgn

int GetWindowRgn( HRGN hRgn )const;

返 回 值

返 回 值 指 定 了 该 函 数 获 得 的 区 域 的 类 型 。 可 以 是 下 列 值 之 一 :

  • NULLREGION 区 域 为 空 。

  • SIMPLEREGION 区 域 是 一 个 简 单 的 矩 形 。

  • COMPLEXREGION 区 域 包 括 多 于 一 个 矩 形 。

  • ERROR 发 生 了 错 误 , 区 域 没 有 受 到 影 响 。

参 数

hRgn

窗 口 区 域 的 句 柄 。

说 明

调 用 这 个 成 员 函 数 以 获 得 窗 口 的 窗 口 区 域 。 窗 口 区 域 确 定 了 操 作 系 统 允 许 画 出窗 口 的 区 域 。 操 作 系 统 不 会 在 窗 口 区 域 之 外 显 示 窗 口 的 任 何 部 分 。

窗 口 的 窗 口 区 域 的 坐 标 是 相 对 于 窗 口 的 的 左 上 角 的 , 不 是 窗 口 的 客 户 区 域 。要 设 置 窗 口 的 窗 口 区 域 , 调 用 CWnd::SetWindowRgn 。

请 参 阅 CWnd::SetWindowRgn

CWnd::GetWindowText

int GetWindowText( LPTSTR lpszStringBuf, int nMaxCount ) const; void Get W indowText( CString& rString ) const;

返 回 值

指 定 了 要 拷 贝 的 字 符 串 的 长 度 ,以 字 节 为 单 位 ,不 包 括 结 尾 的 空 字 符 。如 果 CWnd

没 有 标 题 或 标 题 为 空 , 则 为 0 。

参 数

lpszStringBuf

指 向 要 接 收 窗 口 标 题 的 复 制 字 符 串 的 缓 冲 区 。

nMaxCount

指 定 了 要 拷 贝 的 缓 冲 区 的 最 大 字 符 数 目 。 如 果 字 符 串 比 nMaxCount 指 定的 数 目 还 要 长 , 则 被 截 断 。

rString

用 于 接 收 窗 口 标 题 的 复 制 字 符 串 的 CString 对 象 。

说 明

这 个 函 数 将 CWnd 的 标 题 ( 如 果 有 ) 拷 贝 到 lpszStringBuf 指 向 的 缓 冲 区 或 者 目的 字 符 串 rString 。 如 果 CWnd 对 象 是 一 个 控 件 , 则 GetWindowText 成 员 函 数 将拷 贝 控 件 内 的 文 本 ( 而 不 是 控 件 的 标 题 ) 。

这 个 成 员 函 数 会 向 CWnd 对 象 发 送 一 个 WM_GETTEXT 消 息 。

请 参 阅 CWnd::SetWindowText, W M _GETTEXT, CWnd::GetWindowTextLength

CWnd::GetWindowTextLength

int GetWindowTextLength( ) const;

返 回 值

指 定 了 文 本 的 长 度 , 不 包 括 任 何 结 尾 的 空 字 符 。 如 果 不 存 在 任 何 文 本 , 则 返 回

0 。

说 明

返 回 CWnd 的 标 题 对 象 的 长 度 。 如 果 CWnd 是 一 个 控 件 , 则

GetWindowTextLength 成 员 函 数 返 回 控 件 内 文 本 的 长 度 ( 而 不 是 标 题 的 长 度 ) 。这 个 成 员 函 数 会 向 CWnd 对 象 发 送 一 个 WM_GETTEXTLENGTH 消 息 。

请 参 阅 ::GetWindowTextLength, WM_GETTEXTLENGTH, CWnd::Get W indowText

CWnd::HideCaret

void HideCaret( );

说 明

隐 藏 插 字 符 或 将 它 从 屏 幕 上 清 除 。 尽 管 插 字 符 不 再 可 见 , 但 是 它 还 可 以 用

ShowCaret 成 员 函 数 再 次 显 示 。 隐 藏 插 字 符 不 会 销 毁 它 的 当 前 形 状 。

必 须 调 用 ShowCaret 成 员 函 数 五 次 。

请 参 阅 CWnd::ShowCaret, ::HideCaret

CWnd::HiliteMenuItem

BOOL HiliteMenuItem( CMenu* pMenu , UINT nIDHiliteItem , UINT nHilite );

返 回 值

指 定 了 是 否 要 加 亮 显 示 菜 单 项 。 如 果 要 加 亮 菜 单 项 , 则 返 回 非 零 值 ; 否 则 返 回

0 。

参 数

pMenu

标 识 了 包 含 要 加 亮 的 菜 单 项 的 顶 层 菜 单 。

nIDHiliteItem

指 定 了 要 加 亮 的 菜 单 项 , 依 赖 于 nHilite 参 数 的 值 。

nHilite

指 定 了 是 要 加 亮 指 定 的 菜 单 项 , 还 是 要 清 除 其 加 亮 显 示 状 态 。 它 可 以 是

MF_BYPOSITION 的 组 合 。 这 些 值 可 以 用 位 或 操 作 符 O R 组 合 起 来 。 这些 值 具 有 如 下 含 义 :

  • MF_BYCOMMAND 将 nIDHiliteItem 解 释 为 菜 单 项 ID ( 缺 省 解 释

    ) 。

  • MF_BYPOSITION 将 nIDHiliteItem 解 释 为 零 基 偏 移 的 菜 单 项

  • MF_HILITE 加 亮 显 示 该 项 。 如 果 没 有 给 定 这 个 值 , 则 清

    除 菜 单 项 的加 亮 状 态 。

  • MF_UNHILITE 清 除 菜 单 项 的 加 亮 显 示 状 态 。

说 明

加 亮 显 示 一 个 顶 层 ( 菜 单 条 ) 菜 单 项 或 清 除 其 加 亮 显 示 状 态 。

MF_HILITE 和 MF_UNHILITE 标 志 仅 能 被 用 于 这 个 成 员 函 数 ; 它 们 不 能 与

CMenu::Modify - Menu 成 员 函 数 一 起 使 用 。

请 参 阅 CMenu::ModifyMenu, ::HiliteMenuItem

CWnd::Invalidate

void Invalidate( BOOL bErase = TRUE );

参 数

bErase

指 定 是 否 要 擦 除 更 新 区 域 内 的 背 景 。

说 明

使 CWnd 的 整 个 客 户 区 无 效 。 当 产 生 下 一 个 WM_PAINT 消 息 时 , 客 户 区 被 标记 为 需 要 重 画 。 也 可 以 在 产 生 WM_PAINT 消 息 之 前 用 ValidateRect 或ValidateRgn 成 员 函 数 使 区 域 有 效 。

bErase 参 数 指 定 了 在 处 理 更 新 区 域 的 时 候 是 否 要 擦 除 更 新 区 域 内 的 背 景 。 如 果bErase 为 TRU E , 则 当 调 用 BeginPaint 的 时 候 , 将 擦 除 背 景 。 如 果 bErase 为FALSE , 则 背 景 保 持 不 变 。 如 果 对 于 更 新 区 域 的 任 何 部 分 bErase 为 TRU E , 则整 个 区 域 的 背 景 都 会 被 擦 除 , 而 不 仅 是 给 定 的 部 分 。

每 当 CWnd 的 更 新 区 域 不 为 空 , 并 且 在 应 用 程 序 的 窗 口 消 息 队 列 中 没 有 其 它 消息 时 , W indows 就 发 送 一 条 WM_PAINT 消 息 。

请 参 阅 CWnd::BeginPaint, CWnd::ValidateRect, CWnd::ValidateRgn, ::InvalidateRect

CWnd::InvalidateRect

void InvalidateRect( LPCRECT lpRec t, BOOL bErase = TRUE );

参 数

lpRect

bErase

指 向 一 个 CRect 对 象 或 RECT 结 构 , 其 中 包 含 了 要 被 加 入 更 新 区 域 的 矩形 ( 客 户 区 坐 标 ) 。 如 果 lpRect 为 NULL , 则 整 个 客 户 区 都 被 加 入 更 新区 域 。

指 定 更 新 区 域 内 的 背 景 是 否 要 被 擦 除 。

说 明

这 个 函 数 将 给 定 的 客 户 区 矩 形 加 入 CWnd 更 新 区 域 , 使 该 区 域 无 效 。 无 效 的 矩形 与 更 新 区 域 内 的 其 它 区 域 一 起 被 标 记 为 在 发 送 下 一 条 WM_PAINT 消 息 时 需要 重 画 。 无 效 的 区 域 在 更 新 区 域 内 累 积 , 直 到 发 生 下 一 次 WM_PAINT 调 用 , 这 个 区 域 被 处 理 为 止 , 或 者 直 到 这 个 区 域 被 ValidateRect 或 ValidateRgn 成 员 函数 标 为 有 效 为 止 。

bErase 参 数 指 定 了 在 处 理 更 新 区 域 的 时 候 是 否 要 擦 除 更 新 区 域 内 的 背 景 。 如 果

bErase 为 TRU E , 则 当 调 用 BeginPaint 函 数 的 时 候 , 将 擦 除 背 景 。 如 果 bErase

为 FALSE , 则 背 景 保 持 不 变 。 如 果 对 于 更 新 区 域 的 任 何 部 分 bErase 为 TRU E , 则 整 个 区 域 的 背 景 都 会 被 擦 除 , 而 不 仅 是 给 定 的 部 分 。

当 CWnd 的 更 新 区 域 不 为 空 ,并 且 应 用 程 序 的 窗 口 消 息 队 列 中 没 有 其 它 消 息 时 ,

W indows 就 发 送 一 条 WM_PAINT 消 息 。

请 参 阅 CWnd::BeginPaint, CWnd::ValidateRect, CWnd::ValidateRgn, ::InvalidateRect

CWnd::InvalidateRgn

void InvalidateRgn( CRgn* pRgn , BOOL bErase = TRUE );

参 数

pRgn

bErase

指 向 CRgn 对 象 的 指 针 , 标 识 了 要 被 加 入 更 新 区 域 的 区 域 。 这 个 区 域 被假 定 使 用 客 户 区 坐 标 。 如 果 这 个 参 数 为 NULL , 则 整 个 客 户 区 都 被 加 入到 更 新 区 域 。

指 定 客 户 区 内 的 背 景 是 否 要 被 擦 除 。

说 明

这 个 函 数 将 给 定 的 区 域 加 入 CWnd 更 新 区 域 , 使 该 区 域 无 效 。 无 效 的 区 域 与 更新 区 域 内 的 其 它 区 域 一 起 被 标 记 , 以 便 在 发 送 下 一 条 WM_PAINT 消 息 时 处 理重 画 。 无 效 的 区 域 在 更 新 区 域 内 累 积 , 直 到 发 生 下 一 次 WM_PAINT 调 用 , 这个 区 域 被 处 理 为 止 , 或 者 直 到 这 个 区 域 被 ValidateRect 或 ValidateRgn 成 员 函 数标 为 有 效 为 止 。

bErase 参 数 指 定 了 在 处 理 更 新 区 域 的 时 候 是 否 要 擦 除 更 新 区 域 内 的 背 景 。 如 果bErase 为 TRU E , 则 当 调 用 BeginPaint 的 时 候 , 将 擦 除 背 景 。 如 果 bErase 为FALSE , 则 背 景 保 持 不 变 。 如 果 对 于 更 新 区 域 的 任 何 部 分 bErase 为 TRU E , 则整 个 区 域 的 背 景 都 会 被 擦 除 , 而 不 仅 是 给 定 的 部 分 。

当 CWnd 的 更 新 区 域 不 为 空 ,并 且 应 用 程 序 的 窗 口 消 息 队 列 中 没 有 其 它 消 息 时 ,

W indows 就 发 送 一 条 WM_PAINT 消 息 。

给 定 的 区 域 必 须 是 先 前 用 一 个 区 域 函 数 创 建 的 。

请 参 阅 CWnd::BeginPaint, CWnd::ValidateRect, CWnd::ValidateRgn, ::InvalidateRgn

CWnd::InvokeHelper

void InvokeHelper( DISPID dwDispID , W O R D wFlags , VARTYPE vtRet , void*

pvRe t, const BYTE* pbParamInfo , ... ); throw( COleException );

throw( COleDispatchException );

参 数

dwDispID

标 识 了 要 激 活 的 方 法 或 属 性 。 这 个 值 通 常 是 由 组 件 廊 提 供 的 。

wFlags

描 述 了 调 用 IDispatch::Invoke 的 上 下 文 的 标 志 。 wFlags 的 可 能 取 值 参 见

《 W in32 SDK OLE 程 序 员 参 考 》 中 的 IDispatch::Invoke。

vtRet

指 定 了 返 回 值 的 类 型 。 可 能 的 取 值 参 见 COleDispatchDriver::InvokeHelper 的 说明 部 分 。

pvRet

将 接 收 属 性 值 或 返 回 值 的 变 量 地 址 。 它 必 须 与 vtRet 指 定 的 类 型 匹 配 。

pbParamInfo

指 向 一 个 以 null 结 尾 的 字 节 字 符 串 , 指 定 了 pbParamInfo 后 面 的 参 数 的类 型 。 可 能 的 取 值 参 见 COleDispatchDriver::InvokeHelper 的 说 明 部 分 。

...

参 数 的 变 量 列 表 , 属 于 pbParamInfo 所 指 定 的 类 型 。

说 明

调 用 这 个 函 数 以 激 活 dwDispID 所 指 定 的 OLE 控 件 的 方 法 或 属 性 , 使 用 wFlags 指 定 的 上 下 文 。 pbParamInfo 参 数 指 定 了 传 递 给 方 法 或 属 性 的 参 数 的 类 型 。 在句 法 定 义 中 参 数 的 变 量 列 表 用 ... 来 代 表 。

这 个 函 数 将 参 数 转 换 为 VARIANTARG 值 , 然 后 对 OLE 控 件 调 用IDispatch::Invoke 方 法 。 如 果 对 IDispatch::Invoke 的 调 用 失 败 , 这 个 函 数 将 抛 出一 个 异 常 。 如 果 IDispatch::Invoke 返 回 的 SCODE ( 状 态 码 ) 是DISP_E_EXCEPTION , 则 这 个 函 数 抛 出 一 个 COleException 对 象 ; 否 则 它 抛 出一 个 COleDispatchException 对 象 。

注意 这 个 函 数 只 能 在 代 表 OLE 控 件 的 CWnd 对 象 内 调 用 。

有 关 在 OLE 控 件 容 器 中 使 用 这 个 函 数 的 更 多 信 息 参 见 联 机 的 《 V isual C++ 程 序员 指 南 》 的 文 章 “ ActiveX 控 件 容 器 : 在 ActiveX 控 件 容 器 中 编 写 ActiveX 控件 ” 。

请 参 阅 CWnd::GetProperty, CWnd::SetProperty, COleDispatchDriver, CWnd::CreateControl

BOOL IsChild( const CWnd* pWnd ) const;

返 回 值

描 述 函 数 的 结 果 。 若 pWnd 标 识 的 窗 口 是 CWnd 的 子 窗 口 , 则 返 回 非 零 值 ; 否则 返 回 0 。

参 数

pWnd

标 识 了 要 测 试 的 窗 口 。

说 明

这 个 函 数 指 明 pWnd 标 识 的 窗 口 是 否 是 CWnd 的 子 窗 口 或 直 接 后 代 窗 口 。 如 果CWnd 原 始 弹 出 窗 口 到 该 子 窗 口 的 父 窗 口 链 中 , 则 该 子 窗 口 是 CWnd 的 直 接 后代 窗 口 。

请 参 阅 ::IsChild

BOOL IsDialogMessage( LPMSG lpMsg );

返 回 值

指 明 这 个 函 数 是 否 已 处 理 了 给 定 的 消 息 。 如 果 消 息 已 被 处 理 , 则 返 回 非 零 值 ; 否 则 返 回 0 。 如 果 返 回 值 为 0 , 则 调 用 基 类 的 CWnd::PreTranslateMessage 成 员函 数 以 处 理 这 个 消 息 。 在 CWnd::PreTranslateMessage 成 员 函 数 的 重 载 版 本 中 的代 码 如 下 :

BOOL CMyDlg::PreTranslateMessage( msg )

{

if( IsDialogMessage( msg ) ) return TRUE;

else

}

参 数

return CWnd::PreTranslateMessage( msg );

lpMsg

指 向 一 个 MSG 结 构 , 其 中 包 含 了 要 被 检 查 的 消 息 。

说 明

调 用 这 个 函 数 以 确 定 给 定 的 消 息 是 否 是 一 个 无 模 式 对 话 框 的 。 如 果 是 , 则 函 数处 理 这 个 消 息 。 当 IsDialogMessage 函 数 处 理 消 息 的 时 候 , 它 检 查 键 盘 消 息 并将 它 转 换 为 对 应 对 话 框 的 选 择 命 令 。 例 如 , TAB 键 选 择 下 一 个 控 件 或 控 件 组 , 下 箭 头 键 选 择 组 中 的 下 一 个 控 件 。

你 不 能 将 一 个 已 被 IsDialogMessage 处 理 的 消 息 发 送 给 W indows 函数 ::Translate M essage 或 ::D ispatch M essage, 因 为 它 已 经 被 处 理 了 。

请 参 阅 ::DispatchMessage, ::TranslateMessage, ::GetMessage, CWnd::PreTranslateMessage,::IsDialogMessage

CWnd::IsDlgButtonChecked

UINT IsDlgButtonChecked( int nIDButton ) const;

返 回 值

如 果 给 定 的 控 件 被 选 中 , 则 返 回 非 零 值 ; 如 果 没 有 选 中 , 则 返 回 0 。 只 有 单 选按 钮 和 复 选 按 钮 才 能 被 选 中 。 对 于 三 态 按 钮 , 如 果 按 钮 状 态 不 确 定 , 返 回 值 可以 是 2 。 对 于 按 钮 , 这 个 函 数 返 回 0 。

参 数

nIDButton

指 定 了 按 钮 控 件 的 整 数 标 识 符 。

说 明

这 个 函 数 确 定 一 个 按 钮 控 件 的 附 加 是 否 具 有 选 中 标 记 。 如 果 按 钮 是 三 态 控 件 , 则 这 个 函 数 确 定 它 是 变 灰 、 被 选 中 , 或 都 不 是 。

请 参 阅 ::IsDlgButtonChecked, CButton::GetCheck

CWnd::IsIconic

BOOL IsIconic( ) const;

返 回 值

如 果 CWnd 被 最 小 化 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

这 个 函 数 指 明 CWnd 是 否 被 最 小 化 ( 图 标 化 ) 。

CWnd::Is W indowEnabled

BOOL IsWindowEnabled( ) const;

返 回 值

如 果 允 许 CWed , 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

指 定 了 是 否 允 许 CWnd 接 收 鼠 标 和 键 盘 输 入 。

请 参 阅 ::Is W indowEnabled

CWnd::Is W indowVisible

BOOL IsWindowVisible( ) const;

返 回 值

如 果 CWnd 可见 ( 被 设 值 了 WS_VISIBLE 风 格 位 , 其 父 窗 口 可 见 ) , 则 返 回

其 它 窗 口 完 全 遮 住 , 返 回 值 也 可 以 是 非 零 值 。

说 明

这 个 函 数 确 定 给 定 窗 口 的 视 觉 状 态 。

窗 口 具 有 在 WS_VISIBLE 风 格 位 中 指 定 的 可 视 状 态 。 当 用 ShowWindow 成 员函 数 设 置 了 这 个 风 格 位 时 , 将 显 示 窗 口 , 后 来 在 窗 口 中 的 绘 图 也 一 直 显 示 。

当 窗 口 被 其 它 窗 口 覆 盖 或 被 父 窗 口 裁 剪 时 , 在 具 有 WS_VISIBLE 风 格 位 的 窗 口内 的 绘 图 将 不 会 显 示 。

请 参 阅 CWnd::ShowWindow, ::Is W indowVisible

CWnd::IsZoomed

BOOL IsZoomed( ) const;

返 回 值

如 果 CWnd 被 最 大 化 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

这 个 函 数 确 定 CWnd 是 否 已 被 最 大 化 。

请 参 阅 ::IsZoomed

CWnd::KillTimer

BOOL KillTimer( int nIDEvent );

返 回 值

指 定 了 函 数 的 结 果 。 如 果 事 件 已 经 被 销 毁 , 则 返 回 值 为 非 零 值 。 如 果 KillTimer

成 员 函 数 不 能 找 到 指 定 的 定 时 器 事 件 , 则 返 回 0 。

参 数

nIDEvent

传 递 给 SetTimer 的 定 时 器 事 件 值 。

说 明

销 毁 以 前 调 用 SetTimer 创 建 的 用 nIDEvent 标 识 的 定 时 器 事 件 。 任 何 与 此 定 时器 有 关 的 未 处 理 的 W M _TIMER 消 息 都 从 消 息 队 列 中 清 除 。

请 参 阅 CWnd::SetTimer, ::K illTimer

CWnd::LockWindowUpdate

BOOL LockWindowUpdate( );

返 回 值

如 果 函 数 执 行 成 功 , 则 返 回 非 零 值 。 如 果 失 败 或 者 已 经 使 用 LockWindowUpdate

函 数 锁 定 了 其 它 窗 口 , 则 返 回 0 。

说 明

禁 止 在 指 定 的 窗 口 内 绘 图 。 被 锁 定 的 窗 口 不 能 被 移 动 。 在 同 一 时 刻 只 能 有 一 个窗 口 被 锁 定 。 要 解 锁 一 个 用 LockWindowUpdate 锁 定 的 窗 口 , 调 用UnlockWindowUpdate 。

如 果 拥 有 被 锁 定 窗 口 ( 或 者 任 何 被 锁 定 的 子 窗 口 ) 的 应 用 程 序 调 用 了 W indows 的 GetDC , GetDCEx 或 BeginPaint 函 数 , 则 被 调 用 的 函 数 返 回 一 个 设 备 环 境 , 其 可 视 区 域 为 空 。 直 到 应 用 程 序 调 用 UnlockWindowUpdate 成 员 函 数 解 锁 了 窗口 , 一 直 都 会 这 样 。

当 窗 口 更 新 被 锁 定 时 , 系 统 跟 踪 对 与 锁 定 窗 口 相 关 的 设 备 环 境 所 作 的 绘 图 操 作

的 边 界 矩 形 。 当 重 又 允 许 绘 图 时 , 被 锁 定 的 窗 口 和 它 的 子 窗 口 中 的 这 个 区 域 将被 设 为 无 效 , 强 制 发 送 一 条 WM_PAINT 消 息 以 更 新 屏 幕 。 如 果 当 窗 口 更 新 被锁 定 时 没 有 发 生 绘 图 , 则 没 有 任 何 区 域 被 设 为 无 效 。

LockWindowUpdate 成 员 函 数 不 使 给 定 的 窗 口 不 可 见 , 也 不 清 除 WS_VISIBLE

风 格 位 。

请 参 阅 CWnd::GetDCEx, ::LockWindowUpdate

CWnd::MapWindowPoints

void MapWindowPoints( CWnd* pwndTo , LPRECT lpRect ) const;

void MapWindowPoints( CWnd* pwndTo , LPPOINT lpPoin t, UINT nCount ) const;

参 数

pwndTo

标 识 了 指 定 点 要 被 转 换 到 的 窗 口 。 如 果 这 个 参 数 为 NULL , 则 该 点 被 转换 为 屏 幕 坐 标 。

lpRect

指 定 了 要 转 换 的 点 所 在 的 矩 形 。 这 个 函 数 的 第 一 个 版 本 仅 在 W indows 3.1

和 以 后 的 版 本 中 有 效 。

lpPoint

执行 POINT 结 构 数 组 的 指 针 , 其 中 包 含 要 转 换 的 点 。

nCount

指 定 了 lpPoint 指 向 的 数 组 中 POINT 结 构 的 数 目 。

说 明

这 个 函 数 将 一 系 列 点 从 CWnd 的 坐 标 空 间 转 换( 映 射 ) 到 其 它 窗 口 的 坐 标 空 间 。

请 参 阅 CWnd::ClientToScreen, CWnd::ScreenToClient, ::MapWindowPoints

CWnd::MessageBox

int M essageBox( LPCTSTR lpszText , LPCTSTR lpszCaption = NULL, UINT nType

= MB_OK );

返 回 值

指 定 了 函 数 的 结 果 。 如 果 没 有 足 够 的 内 存 以 创 建 消 息 框 , 则 返 回 0 。

参 数

lpszText

指 向 一 个 CString 对 象 或 以 null 结 尾 的 字 符 串 , 其 中 包 含 了 要 显 示 的 信息。

lpszCaption

指 向 一 个 CString 对 象 或 以 null 结 尾 的 字 符 串 , 被 用 作 消 息 框 标 题 。 如果 lpszCaption 为 NULL , 则 将 使 用 缺 省 的 标 题 “ Error”。

nType

指 定 了 消 息 框 的 内 容 和 行 为 。

说 明

这 个 函 数 创 建 并 显 示 一 个 窗 口 , 其 中 包 含 了 应 用 程 序 提 供 的 消 息 和 标 题 , 加 上预 定 义 的 图 标 和 按 钮 的 组 合 , 这 些 定 义 在 消 息 框 风 格 列 表 中 。 使 用 全 局 函 数AfxMessageBox 代 替 这 个 成 员 函 数 来 为 你 的 应 用 程 序 实 现 消 息 框 。

下 面 显 示 了 可 以 被 用 在 消 息 框 中 的 不 同 的 系 统 图 标 :

C W n d - 图1MB_ICONHAND , MB_ICONSTOP 和 MB_ICONERROR

C W n d - 图2MB_ICONQUESTION

C W n d - 图3MB_ICONEXCLAMATION 和 MB_ICONWARNING

C W n d - 图4MB_ICONASTERISK 和 MB_ICONINFORMATION

请 参 阅 ::M essageBox, AfxMessageBox

CWnd::ModifyStyle

BOOL ModifyStyle( DWORD dwRemove , DWORD dwAdd , UINT nFlags = 0 );

返 回 值

如 果 成 功 地 修 改 了 风 格 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

dwRemove

指 定 了 在 修 改 风 格 时 要 清 除 的 窗 口 风 格 。

dwAdd

指 定 了 在 修 改 风 格 时 要 加 入 的 窗 口 风 格 。

nFlags

要 传 递 给 SetWindowPos 的 标 志 , 如 果 不 应 调 用 SetWinowPos , 则 为 0 。缺 省 值 为 0 。 预 设 的 标 志 列 表 参 见 说 明 部 分 。

说 明

调 用 这 个 成 员 函 数 以 修 改 窗 口 的 风 格 。 要 加 入 或 清 除 的 风 格 可 以 用 位 或 操 作 符

( |) 来 组 合 。 有 关 可 用 窗 口 风 格 的 信 息 参 见 《 W in32 SDK 程 序 员 参 考 》 中 的“ 通 用 窗 口 风 格 ” 主 题 和 ::CreateWindow 。

如 果 nFlags 为 非 零 值 , 则 M odifyStyle 调 用 W indows 的 API 函数 ::Set W indowPo s, 并 将 nFLags 与 下 面 的 四 个 预 定 义 值 组 合 , 以 重 画 窗 口 :

  • SWP_NOSIZE 保 持 当 前 大 小 。

  • SWP_NOMOVE 保 持 当 前 位 置 。

  • SWP_NOZORDER 保 持 当 前 的 Z 轴 顺 序 。

  • SWP_NOACTIVATE 不 激 活 窗 口 。

要 修 改 窗 口 的 扩 展 风 格 , 参 见 ModifyStyleEx。

请 参 阅 Set W indowPos, CWnd::ModifyStyleEx, General Window Styles, ::Set W indowPos

CWnd::ModifyStyleEx

BOOL ModifyStyleEx( DWORD dwRemove , DWORD dwAdd , UINT nFlags = 0 );

返 回 值

如 果 成 功 地 修 改 了 风 格 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

dwRemove

指 定 了 在 修 改 风 格 时 要 清 除 的 窗 口 风 格 。

dwAdd nFlags

指 定 了 在 修 改 风 格 时 要 加 入 的 窗 口 风 格 。

要 传 递 给 SetWindowPos 的 标 志 , 如 果 不 应 调 用 SetWinowPos , 则 为 0 。缺 省 值 为 0 。 预 设 的 标 志 列 表 参 见 说 明 部 分 。

说 明

调 用 这 个 成 员 函 数 以 修 改 窗 口 的 扩 展 风 格 。 要 加 入 或 清 除 的 风 格 可 以 用 位 或 操作 符 ( |) 来 组 合 。 有 关 可 用 的 扩 展 窗 口 风 格 的 信 息 参 见 《 W in32 SDK 程 序 员

参 考 》 中 的 “ 扩 展 窗 口 风 格 ” 主 题 和 ::CreateWindow 。

如 果 nFlags 为 非 零 值 , 则 ModifyStyle Ex 调 用 W indows 的 API 函数 ::Set W indowPo s, 并 将 nFLags 与 下 面 的 四 个 预 定 义 值 组 合 , 以 重 画 窗 口 :

  • SWP_NOSIZE 保 持 当 前 大 小 。

  • SWP_NOMOVE 保 持 当 前 位 置 。

  • SWP_NOZORDER 保 持 当 前 的 Z 轴 顺 序 。

  • SWP_NOACTIVATE 不 激 活 窗 口 。要 修 改 窗 口 的 常 规 风 格 , 参

    见 ModifyStyle 。

请 参 阅 CWnd::ModifyStyle, CreateWindowEx

CWnd::MoveWindow

void MoveWindow( int x, int y, int nWidth , int nHeigh t, BOOL bRepaint = TRUE ); void MoveWindow( LPCRECT lpRect , BOOL bRepaint = TRUE );

参 数

x

指 定 了 CWnd 的 左 边 的 新 位 置 。

y

nWidth

指 定 了 CWnd 的 顶 部 的 新 位 置 。

指 定 了 CWnd 的 新 宽 度 。

nHeight

指 定 了 CWnd 的 新 高 度 。

bRepaint

指 定 了 是 否 要 重 画 CWnd 。如 果 为 TRUE ,则 CWnd 象 通 常 那 样 在 OnPaint 消 息 处 理 函 数 中 接 收 到 一 条 WM_PAINT 消 息 。 如 果 这 个 参 数 为 FALSE , 则 不 会 发 生 任 何 类 型 的 重 画 操 作 。 这 应 用 于 客 户 区 、 非 客 户 区 ( 包 括 标题 条 和 滚 动 条 ) 和 由 于 CWnd 移 动 而 露 出 的 父 窗 口 的 任 何 部 分 。 当 这 个参 数 为 FALSE 的 时 候 , 应 用 程 序 必 须 明 确 地 使 CWnd 和 父 窗 口 中 必 须重 画 的 部 分 无 效 或 重 画 。

lpRect

CRect 对 象 或 RECT 结 构 , 指 定 了 新 的 大 小 和 位 置 。

说 明

这 个 函 数 改 变 窗 口 的 位 置 和 大 小 。

对 于 顶 层 的 CWnd 对 象 , xy 参 数 是 相 对 于 屏 幕 的 左 上 角 的 。 对 于 子 对 象 , 它 们 是 相 对 于 父 窗 口 客 户 区 的 左 上 角 的 。

MoveWindow 函 数 发 送 一 条 WM_GETMINMAXINFO 消 息 。 处 理 这 个 消 息 时 , CWnd 得 到 一 个 改 变 最 大 和 最 小 的 窗 口 缺 省 值 的 机 会 。如 果 传 递 给 MoveWindow 成 员 函 数 的 参 数 超 过 了 这 些 值 , 则 在 WM_GETMINMAXINFO 处 理 函 数 中 可 以用 最 小 或 最 大 值 来 代 替 这 些 值 。

请 参 阅 CWnd::SetWindowPos, WM_GETMINMAXINFO, ::MoveWindow

CWnd::OnActivate

afx_msg void OnActivate( UINT nState , CWnd* pWndOther , BOOL bMinimized );

参 数

nState

指定 CWnd 是 要 被 激 活 还 是 取 消 活 动 状 态 。 它 可 以 是 下 列 值 之 一 :

  • WA_INACTIVE 窗 口 将 被 取 消 活 动 状 态 。

  • WA_ACTIVE 窗 口 将 通 过 不 同 于 鼠 标 点 击 的 某 些 方 法 激 活

    ( 例 如 , 用 键 盘 接 口 选 择 窗 口 ) 。

  • WA_CLICKACTIVE 窗 口 经 鼠 标 点 击 而 激 活 。

pWndOther

指 向 要 激 活 或 取 消 活 动 状 态 的 CWnd 对 象 的 指 针 。 这 个 指 针 可 以 为

NULL , 也 有 可 能 是 临 时 的 。

bMinimized

指 定 了 要 激 活 或 取 消 活 动 状 态 的 CWnd 的 最 小 化 状 态 。 如 果 值 为 TRU E , 表 明 窗 口 是 最 小 化 的 。

如 果 该 值 为 TRU E , 则 CWnd 将 被 激 活 , 否 则 将 取 消 活 动 状 态 。

说 明

当 CWnd 对 象 被 激 活 或 取 消 活 动 状 态 时 , 框 架 调 用 这 个 成 员 函 数 。 首 先 调 用 要取 消 活 动 状 态 的 主 窗 口 的 OnActivate 函 数 , 然 后 调 用 要 被 激 活 的 主 窗 口 的OnActivate 函 数 。

如 果 CWnd 对 象 是 被 鼠 标 点 击 激 活 的 , 则 它 还 将 接 收 到 对 OnMouseActivate 的调 用 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_MOUSEACTIVATE, WM_NCACTIVATE, WM_ACTIVATE

CWnd::OnActivateApp

afx_msg void OnActivateApp( BOOL bActive , HTASK hTask );

参 数

bActive

指 定 了 CWnd 是 要 被 激 活 还 是 被 取 消 活 动 状 态 。 TRUE 意 味 着 CWnd 要被 激 活 。 FALSE 意 味 着 CWnd 将 失 去 活 动 状 态 。

hTask

指 定 了 任 务 句 柄 。 如 果 bActive 为 TRU E , 则 该 句 柄 标 识 了 拥 有 被 取 消 活动 状 态 的 CWnd 对 象 的 任 务 。 如 果 bActive 为 FALSE , 则 该 句 柄 标 识 了拥 有 被 激 活 的 CWnd 对 象 的 任 务 。

说 明

框 架 为 被 激 活 的 任 务 的 所 有 顶 层 窗 口 或 被 取 消 活 动 状 态 的 任 务 的 所 有 顶 层 窗 口调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_ACTIVATEAPP

CWnd::OnAmbientProperty

BOOL OnAmbientProperty( COleControlSite* pSite , DISPID dispid , VARIANT*

pvar )

返 回 值

如 果 支 持 ambient 属 性 , 则 返 回 TRU E ; 否 则 返 回 FALSE 。

参 数

pSite dispid pvar

指 向 请 求 ambient 属 性 的 空 间 的 位 置 的 指 针 。被 请 求 的 ambient 属 性 的 调 度 ID 。

指 向 调 用 者 分 配 的 VARIANT 结 构 的 指 针 , 通 过 这 个 结 构 来 返 回 ambient

属 性 的 值 。

属 性

框 架 调 用 这 个 成 员 函 数 以 从 包 含 OLE 控 件 的 窗 口 获 得 ambient 属 性 值 。 重 载 这

个 函 数 以 改 变 OLE 控 件 容 器 向 它 的 控 件 返 回 的 缺 省 ambient 属 性 值 。 任 何 没 有被 重 载 函 数 处 理 的 ambient 属 性 请 求 将 被 传 递 到 基 类 的 实 现 中 。

CWnd::OnAskCbFormatName

afx_msg void OnAskCbFormatName( UINT nMaxCoun t , LPTSTR lpszString );

参 数

nMaxCount

指 定 了 要 拷 贝 的 最 大 字 节 数 目 。

lpszString

指 向 缓 冲 区 的 指 针 , 格 式 名 的 拷 贝 将 保 存 在 此 缓 冲 区 中 。

说 明

当 剪 贴 板 中 包 含 了 CF_OWNERDISPLAY 格 式 ( 这 意 味 着 剪 贴 板 的 拥 有 者 将 显示 剪 贴 板 的 内 容 ) 的 数 据 句 柄 时 , 框 架 调 用 这 个 成 员 函 数 。 剪 贴 板 的 拥 有 者 将为 它 的 格 式 提 供 名 字 。

重 载 这 个 函 数 并 将 CF_OWNERDISPLAY 格 式 的 名 字 拷 贝 到 指 定 的 缓 冲 区 中 , 不 超 过 指 定 的 最 大 字 节 数 目 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_ASKCBFORMATNAME

CWnd::OnCancelMode

afx_msg void OnCancelMode( );

说 明

框 架 调 用 这 个 成 员 函 数 以 通 知 CWnd 取 消 内 部 模 式 。 如 果 CWnd 拥 有 焦 点 , 则当 对 话 框 或 消 息 框 被 显 示 时 ,它的 OnCancelMode 成 员 函 数 将 被 调 用 。这使 CWnd 拥 有 一 个 取 消 模 式 的 机 会 , 如 鼠 标 捕 获 等 。

缺 省 的 实 现 通 过 调 用 W indows 的 ReleaseCapture 来 作 响 应 。 在 你 的 派 生 类 中 重载 这 个 函 数 以 处 理 其 它 模 式 。

请 参 阅 CWnd::Default, ::ReleaseCapture, WM_CANCELMODE

afx_msg void OnCaptureChanged( CWnd* pWnd );

参 数

pWnd

指 向 获 得 鼠 标 捕 获 的 窗 口 的 指 针 。

说 明

框 架 调 用 这 个 函 数 以 通 知 窗 口 , 它 已 失 去 鼠 标 捕 获 状 态 。

即 使 窗 口 自 己 调 用 了 ::ReleaseCapture , 它 也 会 接 收 到 这 个 消 息 。 应 用 程 序 不 应试 图 在 响 应 这 个 消 息 的 时 候 设 置 鼠 标 捕 获 。 当 它 接 收 到 这 个 消 息 的 时 候 , 如 果有 必 要 , 窗 口 必 须 重 画 自 身 以 响 应 新 的 鼠 标 捕 获 状 态 。

有 关 W indows 的 ReleaseCapture 函 数 的 信 息 参 见 《 W in32 SDK 程 序 员 参 考 》 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_CAPTURECHANGED

afx_msg void OnChangeCbChain( HWND hWndRemove , H W N D hWndAfter );

参 数

hWndRemove

指 定 了 要 从 剪 贴 板 观 察 器 链 中 清 除 的 窗 口 句 柄 。

hWndAfter

指 定 了 剪 贴 板 观 察 器 链 中 要 被 清 除 的 窗 口 后 面 的 窗 口 的 句 柄 。

说 明

框 架 为 剪 贴 板 观 察 器 链 中 的 每 个 窗 口 调 用 这 个 成 员 函 数 , 以 通 知 它 有 一 个 窗 口将 从 链 中 清 除 。

每 个 接 收 到 OnChangeCbChain 的 CWnd 对 象 应 该 使 用 W indows 的 SendMessage 函 数 以 向 剪 贴 板 观 察 器 链 ( 由 SetClipboardViewer 返 回 的 句 柄 ) 中 的 下 一 个 窗口 发 送 WM_CHANGECBCHAIN 消 息 。 如 果 链 中 的 下 一 个 窗 口 是hWndRemove , 则 hWndAfter 指 定 的 窗 口 变 为 下 一 个 窗 口 , 剪 贴 板 消 息 将 发 送给 它 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。

如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::ChangeClipboardChain, ::SendMessage

CWnd::OnChar

afx_msg void OnChar( UINT nChar , UINT nRepCn t, UINT nFlags );

参 数

nChar

包 含 了 键 的 字 符 代 码 值 。

nRepCnt

包 含 了 重 复 计 数 , 当 用 户 按 下 键 时 重 复 的 击 键 数 目 。

nFlags

包 含 了 扫 描 码 , 键 暂 态 码 , 以 前 的 键 状 态 以 及 上 下 文 代 码 , 如 下 面 的 列表 所 示 :

值 含义

0  15 指 定 了 重 复 计 数 。 其 值 是 用 户 按 下 键 时 重 复 的 击 键 数 目

16  23 指 定 了 扫 描 码 。 其 值 依 赖 于 原 始 设 备 制 造 商 ( OEM )

续 表

24 指 明 该 键 是 否 是 扩 展 键 , 如 增 强 的 101 或 102 键 盘 上 右 边 的

ALT 或 CTRL 键

如 果 它 是 个 扩 展 键 , 则 该 值 为 1 ; 否 则 , 值 为 0 25  28 W indows 内 部 使 用

  1. 指 定 了 上 下 文 代 码 。 如 果 按 键 时 ALT 键 是 按 下 的 , 则

    该 值 为

1 ; 否 则 , 值 为 0

  1. 指 定 了 以 前 的 键 状 态 。 如 果 在 发 送 消 息 前 键 是 按 下 的

    , 则 值为 1 ; 如 果 键 是 弹 起 的 , 则 值 为 0

  2. 指 定 了 键 的 暂 态 。 如 果 该 键 正 被 放 开 , 则 值 为 1 , 如

    果 键 正被 按 下 , 则 该 值 为 0

说 明

当 击 键 被 转 换 为 非 系 统 字 符 时 ,框 架 调 用 这 个 成 员 函 数 。这 个 函 数 是 在 OnKeyUp 成 员 函 数 之 前 , OnKeyDown 成 员 之 后 调 用 的 。 OnChar 包 含 了 被 按 下 或 放 开 的键 值 。

由 于 按 键 和 产 生 的 OnChar 调 用 不 必 是 一 一 对 应 的 , 因 此 nFlags 中 的 信 息 对 应用 程 序 通 常 是 没 有 用 的 。 NFlags 中 的 信 息 仅 对 最 近 在 OnChar 之 前 调 用 的OnKeyUp 成 员 函 数 或 OnKeyDown 成 员 函 数 有 用 。

对 于 IBM 增 强 型 101 和 102 键 键 盘 , 键 盘 的 主 体 部 分 的 增 强 键 是 右 边 的 ALT

和 CTRL 键 ;还 有 数 字 键 盘 左 侧 的 IN S,DEL ,H O M E ,END ,PAGE U P ,PAGE

D O W N 以 及 箭 头 键 等 ; 以 及 数 字 键 盘 上 的 斜 杠 ( /) 和 ENTER 键 。 其 它 键 盘 可能 会 支 持 nFlags 中 的 扩 展 键 位 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_CHAR, W M _KEYDOWN, WM_KEYUP

CWnd::OnCharToItem

afx_msg int OnCharToItem( UINT nChar , ClistBox* pListBox , UINT nIndex );

返 回 值

框 架 调 用 这 个 函 数 以 指 定 应 用 程 序 响 应 调 用 时 的 动 作 。 返 回 值 为 -2 则 表 明 应 用程 序 处 理 选 择 项 的 所 有 方 面 , 并 且 不 需 要 列 表 框 采 取 进 一 步 动 作 。 返 回 值 为 -1 则 表 明 列 表 框 应 完 成 缺 省 动 作 以 响 应 击 键 。 返 回 值 为 0 或 更 大 的 值 则 指 出 列 表框 中 一 个 项 的 从 0 开 始 的 索 引 值 , 并 指 出 列 表 框 应 为 在 给 定 项 上 的 击 键 完 成 缺省 动 作 。

参 数

nChar

指 定 了 用 户 按 下 的 键 的 值 。

PListBox

指 定 了 列 表 框 指 针 , 可 能 是 临 时 的 。

NIndex

指 定 了 当 前 的 插 字 符 位 置 。

说 明

当 具 有 LBS_ WANTKEYBOARDINPUT 风 格 的 列 表 框 响 应 W M _CHAR 消 息 时向 它 的 拥 有 者 发 送 一 个 WM_CHARTOITEM 消 息 , 则 调 用 这 个 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_CHAR, W M _CHARTOITEM

CWnd::OnChildActivate

afx_msg void OnChildActivate( );

说 明

如 果 CWnd 对 象 是 一 个 多 文 档 界 面 ( MD I ) 的 子 窗 口 , 则 当 用 户 点 击 窗 口 的 标题 条 或 窗 口 被 激 活 、 移 动 或 改 变 大 小 时 , 框 架 调 用 这 个 函 数 。

请 参 阅 CWnd::SetWindowPos, WM_CHILDACTIVATE

CWnd::OnChildNotify

virtual BOOL OnChildNotify( UINT message , W P A R A M wParam , LPARAM

lParam , LRESULT* pLResult );

返 回 值

如 果 窗 口 负 责 处 理 发 送 给 它 的 父 窗 口 的 消 息 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

message

发 送 给 父 窗 口 的 W indows 消 息 。

WParam

与 消 息 相 关 的 wparam 。

LParam

与 消 息 相 关 的 lparam 。

PLResult

指 向 父 窗 口 过 程 返 回 值 的 指 针 。 如 果 没 有 返 回 值 , 则 这 个 指 针 可 以 是

NULL 。

说 明

当 窗 口 的 父 窗 口 接 收 到 这 个 窗 口 有 关 的 通 知 消 息 时 , 就 调 用 这 个 成 员 函 数 。永 远 不 要 直 接 调 用 这 个 成 员 函 数 。

这 个 成 员 函 数 的 缺 省 实 现 返 回 0 , 这 意 味 着 父 窗 口 将 处 理 消 息 。重 载 这 个 成 员 函 数 以 扩 展 响 应 通 知 消 息 的 方 式 。

CWnd::OnClose

afx_msg void OnClose( );

框 架 调 用 这 个 函 数 , 作 为 CWnd 或 应 用 程 序 要 被 关 闭 的 信 号 。 缺 省 的 实 现 调 用

Destroy W indow 。

请 参 阅 CWnd::DestroyWindow, WM_CLOSE

CWnd::OnCommand

virtual BOOL OnCommand( WPARAM wParam , LPARAM lParam );

返 回 值

如 果 应 用 程 序 要 处 理 这 个 消 息 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

wParam

wParam 的 低 位 字 标 识 了 菜 单 项 或 控 件 的 命 令 ID 。 如 果 消 息 是 控 件 发 出的 , 则 wParam 的 高 位 字 标 识 了 通 知 消 息 。 如 果 消 息 是 加 速 键 发 出 的 , 则 高 位 字 为 1 。 如 果 消 息 是 菜 单 发 出 的 , 则 高 位 字 为 0 。

LParam

如 果 消 息 是 控 件 发 出 的 , 则 标 识 了 发 出 消 息 的 控 件 ; 否 则 lParam 为 0 。

当 用 户 从 菜 单 中 选 择 了 一 项 , 或 者 子 控 件 发 出 一 个 通 知 消 息 , 或 者 转 换 了 一 个加 速 键 的 击 键 事 件 , 框 架 就 调 用 这 个 成 员 函 数 。

OnCommand 处 理 控 件 通 知 和 ON_COMMAND 入 口 的 消 息 映 射 , 并 调 用 相 应的 成 员 函 数 。

在 你 的 派 生 类 中 重 载 这 个 函 数 以 处 理 W M _ C O M M A N D 消 息 。 除 非 调 用 了 基 类的 OnCommand , 否 则 不 应 处 理 消 息 映 射 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_COMMAND, CcmdTarget::OnCmdMsg

CWnd::OnCompacting

afx_msg void OnCompacting( UINT nCpuTime );

参 数

nCpuTime

指 定 了 当 前 W indows 压 缩 内 存 所 耗 费 的 CPU 时 间 与 执 行 其 它 操 作 所 耗费 的 时 间 的 比 例 。 例 如 , 8000h 代 表 有 50% 的 CPU 时 间 用 于 压 缩 内 存 。

说 明

当 W indows 检 测 到 在 30 秒 至 60 秒 时 间 内 有 多 于 12.5% 的 系 统 时 间 被 花 费 在 压缩 内 存 上 , 则 框 架 为 索 引 的 顶 层 窗 口 调 用 这 个 成 员 函 数 。 这 表 明 系 统 内 存 不 足 。

当 CWnd 对 象 接 收 到 这 个 调 用 时 , 它 应 当 释 放 尽 可 能 多 的 内 存 , 考 虑 应 用 程 序的 活 动 的 等 级 以 及 在 W indows 下 运 行 的 应 用 程 序 总 数 。 应 用 程 序 可 以 调 用W indows 函 数 以 确 定 有 多 少 个 程 序 正 在 运 行 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_COMPACTING

CWnd::OnCompareItem

afx_msg int OnCompareItem( int nIDCtl , LPCOMPAREITEMSTRUCT

lpCompareItemStruct );

返 回 值

指 明 两 个 项 的 相 对 位 置 。 它 可 能 是 如 下 值 之 一 :

值 含义

– 1 第 一 项 排 在 第 二 项 前 面

  1. 第 一 项 与 第 二 项 顺 序 相 同

  2. 第 一 项 排 在 第 二 项 后 面

参 数

nIDCtl

发出 WM_COMPAREITEM 消 息 的 控 件 的 标 识 符 。

LpCompareItemStruct

包 含 了 一 个 指 向 COMPAREITEMSTRUCT 数 据 结 构 的 长 指 针 , 其 中 包含 了 标 识 符 和 应 用 为 组 合 框 或 列 表 框 中 的 两 项 提 供 的 数 据 。

说 明

框 架 调 用 这 个 成 员 函 数 以 指 定 排 序 的 自 画 组 合 框 或 列 表 框 中 新 项 的 相 对 位 置 。

如 果 组 合 框 或 列 表 框 是 用 CBS_SORT 或 LBS_SORT 风 格 创 建 的 , 则 当 应 用 程序 加 入 新 项 时 , W indows 向 组 合 框 或 列 表 框 的 拥 有 者 发 送 一 条WM_COMPAREITEM 消 息 。

组 合 框 或 列 表 框 中 的 两 项 在 lpCompareItemStruct 指 向 的COMPAREITEMSTRUCT 结 构 中 改 变 形 式 。 OnCompareItem 必 须 返 回 一 个 能 指明 哪 一 项 出 现 在 另 一 项 之 前 的 值 。 通 常 , W indows 调 用 这 个 函 数 若 干 次 , 直 到它 能 够 确 定 新 项 的 确 切 位 置 。

如 果 COMPAREITEMSTRUCT 结 构 的 hwndItem 成 员 属 于 ClistBox 或CcomboBox 对 象 , 则 将 调 用 适 当 的 类 的 虚 拟 函 数 CompareItem 。 在 你 继 承 的ClistBox 或 CcomboBox 类 中 重 载 CcomboBox::CompareItem 或ClistBox::CompareItem 以 实 现 项 比 较 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 COMPAREITEMSTRUCT, WM_COMPAREITEM,

ClistBox::CompareItem, CcomboBox::CompareItem

CWnd::OnContextMenu

afx_msg void OnContextMenu( CWnd* pWnd , Cpoint pos );

pWnd

Pos

用 户 右 击 鼠 标 的 窗 口 的 句 柄 。 这 可 以 是 接 收 到 消 息 的 窗 口 的 一 个 子 窗 口 。有 关 处 理 这 个 消 息 的 更 多 信 息 参 见 说 明 部 分 。

点 击 鼠 标 时 光 标 的 位 置 , 用 屏 幕 坐 标 表 示 。

说 明

当 用 户 在 窗 口 中 点 击 鼠 标 右 键 ( 右 击 ) 时 , 框 架 调 用 这 个 函 数 。 你 可 以 处 理 这个 消 息 , 使 用 TrackPopupMenu 显 示 上 下 文 菜 单 。

如 果 你 没 有 显 示 上 下 文 菜 单 , 你 必 须 将 这 个 消 息 传 递 给 DefWindowProc 函 数 。如 果 你 的 窗 口 是 一 个 子 窗 口 , DefWindowProc 将 这 个 消 息 发 送 给 父 窗 口 ; 否 则 , 如 果 指 定 的 位 置 是 在 窗 口 的 标 题 上 , 则 Def W indowProc 显 示 一 个 缺 省 的 上 下 文菜 单 。

CWnd::OnCopyData

afx_msg BOOL OnCopyData ( CWnd* pWnd , COPYDATASTRUCT*

pCopyDataStruct );

如 果 接 收 应 用 程 序 成 功 地 接 收 到 了 数 据 , 则 返 回 TRU E ; 否 则 返 回 FALSE 。

参 数

pWnd

指 向 发 送 数 据 的 CWnd 对 象 的 指 针 。

PCopyDataStruct

指 向 一 个 COPYDATASTRUCT 结 构 的 指 针 , 其 中 包 含 了 要 被 发 送 的 数据。

说 明

框 架 调 用 这 个 成 员 函 数 以 把 数 据 从 一 个 应 用 程 序 发 送 到 另 一 个 应 用 程 序 。数 据 中 不 能 包 含 接 收 数 据 的 应 用 程 序 所 不 能 访 问 的 对 象 的 指 针 或 其 它 引 用 。在 拷 贝 数 据 的 时 候 , 它 不 能 被 发 送 过 程 的 其 它 线 程 所 改 变 。

接 收 应 用 程 序 应 认 为 数 据 是 只 读 的 。 PCopyDataStruct 参 数 指 向 的 结 构 仅 在 传 输数 据 的 时 候 有 效 ; 但 是 , 接 收 应 用 程 序 不 应 释 放 与 结 构 相 关 的 内 存 。

如 果 接 收 应 用 程 序 需 要 在 函 数 返 回 之 后 访 问 数 据 , 它 必 须 将 接 收 到的 数 据 拷 贝 到 本 地 缓 冲 区 中 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_COPYDATA

CWnd::OnCreate

afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );

返 回 值

OnCreate 必 须 返 回 0 以 继 续 CWnd 对 象 的 创 建 过 程 。 如 果 应 用 程 序 返 回 -1 , 窗口 将 被 销 毁 。

参 数

lpCreateStruct

指 向 一 个 CREATESTRUCT 结 构 , 其 中 包 含 了 与 要 创 建 的 CWnd 对 象 有关 的 信 息 。

当 应 用 程 序 通 过 调 用 成 员 函 数 Create 或 CreateEx 请 求 创 建 W indows 的 窗 口 时 , 框 架 调 用 这 个 成 员 函 数 。 CWnd 对 象 在 窗 口 被 创 建 以 后 , 但 是 在 它 变 为 可 见 之前 接 收 到 对 这 个 函 数 的 调 用 。 OnCreate 是在 Create 或 CreateEx 成 员 函 数 返 回之 前 被 调 用 的 。

重 载 这 个 成 员 函 数 以 执 行 派 生 类 所 需 的 初 始 化 工 作 。

CREATESTRUCT 结 构 中 包 含 了 用 于 创 建 窗 口 的 参 数 的 拷 贝 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::CreateEx, CWnd::OnNcCreate, WM_CREATE, CWnd::Default, CWnd::FromHandle

CWnd::OnCtlColor

afx_msg HBRUSH OnCtlColor( CDC* pD C , CWnd* pWnd , UINT nCtlColor );

OnCtlColor 必 须 返 回 一 个 刷 子 句 柄 , 该 刷 子 将 被 用 于 画 出 控 件 的 背 景 。

参 数

pDC PWnd

包 含 了 子 窗 口 的 显 示 设 备 环 境 的 指 针 。 可 能 是 临 时 的 。包 含 了 要 求 颜 色 的 控 件 的 指 针 。 可 能 是 临 时 的 。

NCtlColor

包 含 了 下 列 值 , 指 定 了 控 件 的 类 型 :

  • CTLCOLOR_BTN 按 钮 控 件

  • CTLCOLOR_DLG 对 话 框

  • CTLCOLOR_EDIT 编 辑 控 件

  • CTLCOLOR_LISTBOX 列 表 框 控 件

  • CTLCOLOR_MSGBOX 消 息 框

  • CTLCOLOR_SCROLLBAR 滚 动 条 控 件

  • CTLCOLOR_STATIC 静 态 控 件

当 要 画 出 一 个 子 控 件 时 , 框 架 就 调 用 这 个 成 员 函 数 。 多 数 控 件 将 这 个 消 息 发 送到 它 们 的 父 窗 口 ( 通 常 是 一 个 对 话 框 ) , 为 使 用 正 确 的 颜 色 画 出 控 件 而 准 备pDC 。

要 改 变 文 本 的 颜 色 , 使 用 要 求 的 红 、 绿 、 蓝 色 值 ( RGB ) 调 用 SetTextColor 成员 函 数 。

要 改 变 单 行 编 辑 控 件 的 背 景 颜 色 , 在 C TLCOLOR_EDIT 和CTLCOLOR_MSGBOX 消 息 代 码 中 设 置 刷 子 句 柄 ,并 在 响 应 CTLCOLOR_EDIT 的 代 码 中 调 用 CDC::SetBkColor 函 数 。

不 会 为 下 拉 组 合 框 中 的 列 表 框 调 用 OnCtlColor 函 数 , 因 为 下 拉 列 表 框 实 际 上 是组 合 框 的 子 窗 口 , 而 不 是 窗 口 的 子 窗 口 。 要 改 变 下 拉 列 表 框 的 颜 色 , 创 建 一 个CcomboBox , 在 重 载 的 OnCtlColor 中 的 nCtlColor 参 数 中 检 查CTLCOLOR_LISTBOX 。 在 这 个 处 理 函 数 中 , 为 设 置 文 本 的 背 景 必 须 使 用SetBkColor 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CDC::SetBkColor

CWnd::OnDeadChar

afx_msg void OnDeadChar( UINT nChar , UINT nRepCn t, UINT nFlags );

参 数

nChar

指 定 死 键 的 字 符 值 。

NRepCnt

指 定 重 复 计 数 。

NFlags

指 定 了 扫 描 码 、 键 暂 态 码 、 以 前 的 按 键 状 态 和 上 下 文 代 码 , 如 下 面 的 列表 所 示 :

值 含义

0  7 扫 描 码 。 高 位 字 的 低 字 节

8 扩 展 键 , 例 如 功 能 键 或 数 字 键 盘 上 的 键 ( 如 果 为 扩 展 键 则 值 为

1 , 否 则 为 0 )

9-10 没 有 使 用

11  12 由 W indows 内 部 使 用

  1. 上 下 文 代 码 ( 如 果 按 下 键 的 时 候 ALT 键 是 被 放 开 的 ,

    则 返 回

1 ; 否 则 返 回 0 )

续表

  1. 以 前 的 键 状 态 ( 如 果 此 函 数 被 调 用 前 该 键 是 被 按 下 的

    , 则 为 1 ; 如 果 该 键 是 放 开 的 , 则 该 值 为 0 )

  2. 暂 态 ( 如 果 键 正 被 放 开 , 则 为 1 , 如 果 正 被 按 下 , 则

    为 0 )

说 明

当 OnKeyUp 成 员 函 数 和 OnKeyDown 成 员 函 数 被 调 用 的 时 候 , 框 架 调 用 这 个函 数 。 这 个 成 员 函 数 可 以 被 用 来 指 定 死 键 的 字 符 值 。 死 键 是 这 样 一 种 键 , 例 如元 音 字 符 ( 双 点 ) , 它 与 其 它 字 符 组 合 成 符 合 字 符 。 例 如 , 元 音 O 是 由 死 键 、元 音 和 O 键 组 成 的 。

通 常 应 用 程 序 使 用 OnDeadChar 来 对 用 户 每 次 按 键 作 反 馈 。 例 如 , 应 用 程 序 可以 在 当 前 字 符 位 置 显 示 一 个 重 音 字 符 , 而 不 需 要 移 动 插 字 符 。

由 于 按 键 和 OnDeadChar 调 用 不 必 是 一 一 对 应 的 , 因 此 对 应 用 程 序 来 说 , nFlags 中 的 信 息 通 常 是 没 有 用 的 。 nFlags 中 的 信 息 只 对 在 OnDeadChar 调 用 之 前 最 近的 OnKeyUp 和 OnKeyDown 成 员 函 数 的 调 用 有 效 。

对 于 IBM 增 强 型 101 和 102 键 键 盘 , 键 盘 的 主 体 部 分 的 增 强 键 是 右 边 的 ALT 和 CTRL 键 ;还 有 数 字 键 盘 左 侧 的 IN S,DEL ,H O M E ,END ,PAGE U P ,PAGE D O W N , 箭 头 键 ; 以 及 数 字 键 盘 上 的 斜 杠 ( /)和 ENTER 键 等 。 其 它 键 盘 可 能会 支 持 nFlags 中 的 扩 展 键 位 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_DEADCHAR

CWnd::OnDeleteItem

afx_msg void OnDeleteItem( int nIDCtl , LPDELETEITEMSTRUCT

lpDeleteItemStruct );

参 数

nIDCtl

发出 WM_DELETEITEM 消 息 的 控 件 的 标 识 符 。

lpDeleteItemStruct

指 定 了 指 向 DELETEITEMSTRUCT 结 构 的 长 指 针 , 其 中 包 含 有 关 要 删 除的 列 表 框 项 的 信 息 。

框 架 调 用 这 个 函 数 以 通 知 自 画 列 表 框 或 组 合 框 的 拥 有 者 , 列 表 框 或 组 合 框 将 被销 毁 , 或 者 用 CComboBox::DeleteString , CListBox::DeleteString , CComboBox::ResetContent 或 CListBox::ResetContent 清 除 其 中 的 项 。

如 果 DELETEITEMSTRUCT 结 构 中 的 hwndItem 成 员 属 于 组 合 框 或 列 表 框 , 则将 调 用 适 当 的 类 的 虚 拟 函 数 DeleteItem 。 重 载 适 当 的 控 件 类 中 的 DeleteItem 成员 函 数 以 删 除 与 项 有 关 的 数 据 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CComboBox::DeleteString, CListBox::DeleteString, CComboBox::ResetContent, CListBox::ResetContent, WM_DELETEITEM, CListBox::DeleteItem, CComboBox::DeleteItem

CWnd::OnDestroy

afx_msg void OnDestroy( );

框 架 调 用 这 个 成 员 函 数 以 通 知 CWnd 对 象 它 将 被 销 毁 。 OnDestroy 是 在 CWnd

对 象 已 经 从 屏 幕 上 清 除 以 后 被 调 用 的 。

首 先 为 被 销 毁 的 CWnd 调 用 OnDestroy , 然 后 当 CWnd 的 子 窗 口 被 销 毁 时 为 它们 调 用 OnDestroy 。 可 以 假 定 当 OnDestroy 运 行 的 时 候 , 所 有 的 子 窗 口 依 然 存在 。

如 果 被 销 毁 的 CWnd 对 象 是 剪 贴 板 观 察 器 链 ( 通 过 调 用 SetClipboardViewer 成员 函 数 设 置 ) 的 一 部 分 , CWnd 必 须 在 从 OnDestroy 函 数 返 回 之 前 调 用ChangeClipboardChain 成 员 函 数 , 将 自 己 从 剪 贴 板 观 察 器 链 中 清 除 。

请 参 阅 CWnd::ChangeClipboardChain, CWnd::DestroyWindow, CWnd::SetClipboardViewer

CWnd::OnDestroyClipboard

afx_msg void OnDestroyClipboard( );

说 明

当 通 过 调 用 W indows 的 EmptyClipboard 函 数 清 空 剪 贴 板 时 , 框 架 为 剪 贴 板 的拥 有 者 调 用 这 个 成 员 函 数 。

CWnd::OnDeviceChange

afx_msg BOOL OnDeviceChange( UINT nEventType , D W O R D dwData );

参 数

nEventType

事 件 类 型 。 有 关 可 能 取 值 的 描 述 参 见 说 明 部 分 。

dwData

包 含 了 与 事 件 有 关 的 数 据 的 结 构 的 地 址 。 它 的 含 义 依 赖 于 给 定 的 事 件 。

说 明

框 架 调 用 这 个 函 数 以 通 知 应 用 程 序 或 设 备 驱 动 程 序 , 设 备 或 计 算 机 的 硬 件 配 置发 生 了 改 变 。

对 于 提 供 了 软 件 控 制 功 能 , 如 弹 出 和 锁 定 的 设 备 , 操 作 系 统 通 常 发 送 一 条DBT_DEVICEREMOVEPENDING 消 息 , 以 便 使 应 用 程 序 和 设 备 驱 动 程 序 停 止对 设 备 的 使 用 。

如 果 操 作 系 统 强 行 清 除 了 一 个 设 备 , 它 可 能 不 会 发 送

nEvent 参 数 可 以 是 下 列 值 之 一 :

  • DBT_DEVICEARRIVAL 已 经 加 入 了 一 个 设 备 , 现 在 可 以 使 用

  • D BT_DEVICEQUERYREMOVE 允 许 清 除 被 请 求 的 设 备 。 任 何 应 用

    程 序都 可 以 拒 绝 这 个 请 求 并 取 消 清 除 操 作 。

  • DBT_DEVICEQUERYREMOVEFAILED 清 除 设 备 的 请 求 被 取 消 了 。

  • DBT_DEVICEREMOVEPENDING 设 备 将 要 被 清 除 。 不 能 拒 绝 。

  • DBT_DEVICEREMOVECOMPLETE 设 备 已 经 被 清 除 。

  • DBT_DEVICETYPESPECIFIC 与 设 备 有 关 的 事 件 。

  • DBT_CONFIGCHANGED 当 前 配 置 发 生 了 变 化 。

  • DBT_DEVNODES_CHANGED 设 备 节 点 发 生 了 变 化 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_DEVICECHANGE

CWnd::OnDevModeChange

afx_msg void OnDevModeChange( LPTSTR lpDeviceName );

参 数

lpDeviceName

指向 W indows 初 始 化 文 件 W IN.INI 中 指 定 的 设 备 名 。

说 明

当 用 户 改 变 设 备 模 式 设 置 时 ,框 架 为 所 有 的 顶 层 CWnd 对 象 调 用 这 个 成 员 函 数 。

处 理 WM_DEVMODECHANGE 消 息 的 应 用 程 序 可 以 重 新 初 始 化 它 们 的 设 备 模式 设 置 。 通 常 , 使 用 W indows 的 ExtDeviceMode 函 数 来 保 存 和 恢 复 设 备 设 置 的应 用 程 序 不 处 理 这 个 函 数 。

当 用 户 在 控 制 面 板 中 改 变 缺 省 打 印 机 时 , 不 会 调 用 这 个 函 数 。 在 这 种 情 况 下 , 将 调 用 OnWinIniChange 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_DEVMODECHANGE

CWnd::OnDrawClipboard

afx_msg void OnDrawClipboard( );

说 明

当 剪 贴 板 的 内 容 发 生 变 化 时 , 框 架 为 剪 贴 板 观 察 器 链 中 的 每 个 窗 口 调 用 这 个 成员 函 数 。 只 有 那 些 通 过 调 用 SetClipboardViewer 成 员 函 数 加 入 了 剪 贴 板 观 察 器链 的 应 用 程 序 才 需 要 响 应 这 个 调 用 。

接 收 到 OnDrawClipboard 的 每 个 窗 口 必 须 调 用 W indows 的 SendMessage 函 数 以向 剪 贴 板 观 察 器 链 中 的 下 一 个 窗 口 传 递 一 个 WM_DRAWCLIPBOARD 消 息 。下 一 个 窗 口 的 句 柄 是 通 过 SetClipboardViewer 成 员 函 数 返 回 的 ; 它 可 能 在 响 应OnChangeCbChain 成 员 函 数 调 用 的 时 候 被 修 改 。

请 参 阅 ::SendMessage, CWnd::SetClipboardViewer, WM_CHANGECBCHAIN, WM_DRAWCLIPBOARD

CWnd::OnDrawItem

afx_msg void OnDrawItem( int nIDCtl , LPDRAWITEMSTRUCT

lpDrawItemStruct );

参 数

nIDCtl

包 含 了 发 送 WM_DRAWITEM 消 息 的 控 件 的 标 识 符 。 如 果 菜 单 发 送 了 此消 息 , 则 nIDCtl 中 包 含 0 。

lpDrawItemStruct

指 定 了 指 向 DRAWITEMSTRUCT 数 据 结 构 的 长 指 针 , 其 中 包 含 有 关 要画 出 的 项 和 要 求 的 绘 图 类 型 的 信 息 。

说 明

当 控 件 或 菜 单 的 可 视 状 态 发 生 变 化 时 , 框 架 为 自 画 按 钮 控 件 、 组 合 框 控 件 、 列表 框 控 件 或 者 菜 单 的 拥 有 者 调 用 这 个 成 员 函 数 。

DRAWITEMSTRUCT 结 构 的 itemAction 成 员 定 义 了 要 执 行 的 绘 图 操 作 。 这 个成 员 中 的 数 据 允 许 控 件 的 拥 有 者 确 定 需 要 什 么 绘 图 动 作 。

在 从 处 理 这 个 消 息 的 过 程 中 返 回 之 前 ,应 用 程 序 必 须 确 保 DRAWITEMSTRUCT

的 hDC 成 员 所 标 识 的 设 备 环 境 已 经 恢 复 到 缺 省 状 态 。

如 果 hwndItem 成 员 属 于 CButton 、 CMenu 、 CListBox 或 CComboBox 对 象 , 则将 调 用 适 当 的 类 的 虚 函 数 DrawItem 。 重 载 适 当 的 控 件 类 的 DrawItem 成 员 函 数以 画 出 项 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 DRAWITEMSTRUCT, WM_DRAWITEM, CButton::DrawItem, CMenu::DrawItem, CListBox::DrawItem, CComboBox::DrawItem

CWnd::OnDropFiles

afx_msg void OnDropFiles( HDROP hDropInfo );

参 数

hDropInfo

指 向 描 述 下 放 文 件 的 内 部 数 据 结 构 的 指 针 。 这 个 句 柄 被 W indows 的DragFinish , DragQueryFile 和 DragQueryPoint 函 数 所 使 用 , 用 来 获 得 与下 放 文 件 有 关 的 信 息 。

说 明

当 用 户 在 注 册 为 下 放 文 件 接 收 者 的 窗 口 上 方 放 开 鼠 标 左 键 时 , 框 架 就 调 用 这 个成 员 函 数 。

通 常 , 派 生 类 被 设 计 为 支 持 下 放 文 件 , 并 且 将 在 窗 口 构 造 过 程 中 注 册 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::DragAcceptFiles, WM_DROPFILES,

::DragAcceptFiles, ::DragFinish, ::DragQueryFile, ::DragQueryPoint

CWnd::OnDSCNotify

afx_msg BOOL OnDSCNotify( DSCSTATE nState , DSCREASON nReason , BOOL

pBool );

返 回 值

如 果 nReasonnState 所 标 识 的 操 作 被 处 理 了 ,则 返 回 TRU E ;否 则 返 回 FALSE 。

参 数

nState

DSCSTATE 枚 举 量 中 的 一 个 命 名 常 量 , 列 在 Remarks 部 分 。

nReason

DSCSTATE 枚 举 量 中 的 一 个 命 名 常 量 , 列 在 Remarks 部 分 。

pBool

一 个 布 尔 型 结 果 , 指 明 nStatenReason 代 表 的 操 作 是 否 应 当 继 续 。

说 明

当 与 数 据 源 控 件 相 绑 定 的 控 件 修 改 或 试 图 修 改 游 标 时 , 就 在 响 应 数 据 源 控 件 引发 的 事 件 时 调 用 这 个 接 收 方 通 知 。 使 用 它 来 跟 踪 数 据 源 控 件 产 生 的 原 因

( nReason ) 和 状 态 ( nState ) 。 缺 省 情 况 下 允 许 状 态 和 原 因 的 任 意 组 合 。 编 写你 自 己 的 代 码 以 测 试 对 你 的 应 用 程 序 而 言 是 重 要 的 状 态 和 原 因 , 然 后 返 回 适 当的 TRUE 或 FALSE 。

要 使 用 OnDSCNotify , 在 需 要 接 收 接 收 方 通 知 的 类 的 头 文 件 中 定 义 一 个 接 收 映射 以 及 接 收 方 通 知 的 处 理 函 数 如 下 :

class CMyDlg : public CDialog

{

... DECLARE_EVENTSINK_MAP()

BOOL OnDSCNotify(DSCSTATE nState,

DSCREASON nReason, BOOL* pBool);

...

};

然 后 , 在 你 的 类 的 实 现 中 , 定 义 接 收 映 射 并 指 定 接 收 事 件 的 函 数 如 下 :

BEGIN_EVENTSINK_MAP(CMyDlg, CDialog) ON_DSCNOTIFY(CMyDlg, IDC_RDCCTRL1, OnDSCNotify)

END_EVENTSINK_MAP()

当 事 件 在 数 据 源 控 件 内 发 生 时 , 通 知 回 调 函 数 , 即 你 实 现 的 OnDSCNotify

将 被 调 用 。

enum DSCREASON

{

dscNoReason = 0,

dscClose, dscCommit, dscDelete, dscEdit, dscInsert, dscModify, dscMove

};

对 于 下 面 列 出 的 每 一 种 状 态 , 它 将 被 调 用 多 次 :

enum DSCSTATE

{

dscNoState = 0, dscOKToDo, dscCancelled, dscSyncBefore, dscAboutToDo,

dscFailedToDo, dscSyncAfter, dscDidEvent

};

多 次 调 用 使 你 能 够 以 不 同 的 次 数 跟 踪 事 件 。 例 如 , 由 于 事 件 通 常 是 在 响 应 控 件对 游 标 的 修 改 时 产 生 的 , 数 据 源 控 件 需 要 做 的 第 一 件 事 情 就 是 引 发 一 个 事 件 , 询 问 是 否 可 以 真 正 执 行 这 个 动 作 ; 因 此 是 dsdOKToDo 状 态 的 原 因 。 如 果 监 控事 件 ( 数 据 控 件 、 应 用 程 序 等 等 ) 的 所 有 客 户 都 接 收 了 事 件 , 数 据 源 控 件 将 进入 dscSyncBefore 状 态 , 此 时 如 有 必 要 , 所 有 外 面 的 数 据 都 将 被 刷 新 。 例 如 , 如 果 编 辑 域 的 内 容 发 生 了 变 化 , 这 个 变 化 将 被 发 送 到 游 标 。 在 这 个 事 件 之 后 , 数 据 源 控 件 将 进 入 dscAboutToDo 和 dscSyncAfter 状 态 , 最 后 进 入 dscDidEvent 状 态 。 这 些 为 你 提 供 了 从 数 据 源 空 捕 捉 通 知 的 更 多 机 会 。

请 参 阅 CWnd::GetDSCCursor, CWnd::BindDefaultProperty, CWnd::BindProperty

CWnd::OnEnable

afx_msg void OnEnable( BOOL bEnable );

参 数

bEnable

这 个 参 数 为 TRU E ; 如 果 CWnd 是 被 禁 止 的 , 则 为 FALSE 。

说 明

当 应 用 程 序 改 变 CWnd 对 象 的 允 许 状 态 时 , 框 架 调 用 这 个 成 员 函 数 。 OnEnable

在 EnableWindow 成 员 函 数 返 回 之 前 被 调 用 , 但 是 是 在 窗 口 的 允 许 状 态

( WS_DISABLE 风 格 位 ) 改 变 之 后 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::EnableWindow, WM_ENABLE

CWnd::OnEndSession

afx_msg void OnEndSession( BOOL bEnding );

参 数

bEnding

指 定 了 会 话 过 程 是 否 要 结 束 。 如 果 要 结 束 会 话 , 则 为 TRUE ; 否 则 为

说 明

在 CWnd 对 象 从 OnQueryEndSession 成 员 函 数 中 返 回 一 个 非 零 值 之 后 , 框 架 调用 这 个 成 员 函 数 。 OnEndSession 通 知 CWnd 对 象 会 话 确 实 将 要 结 束 。

如 果 bEnding 为 TRUE , 则 在 所 有 的 应 用 程 序 从 这 个 函 数 中 返 回 之 后 , W indows 可 以 在 任 何 时 候 结 束 。 因 此 , 应 当 使 应 用 程 序 在 OnEndSession 内 部 完 成 结 束 时所 需 的 所 有 任 务 。

当 会 话 结 束 的 时 候 , 你 不 必 调 用 DestroyWindow 成 员 函 数 或 W indows 的

PostQuitMessage 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::DestroyWindow, CWnd::OnQueryEndSession, ::ExitWindows,

::PostQuit M essage, WM_QUERYENDSESSION, CWnd::Default, WM_ENDSESSION

CWnd::OnEnterIdle

afx_msg void OnEnterIdle( UINT nWhy , CWnd* pWho );

参 数

nWhy

pWho

指 明 该 消 息 是 显 示 对 话 框 还 是 显 示 菜 单 的 结 果 。 这 个 参 数 可 以 是 下 列 值之 一 :

  • MSGF_DIALOGBOX 系 统 空 闲 , 因 为 正 在 显 示 对 话 框 。

  • MSGF_MENU 系 统 空 闲 , 因 为 正 在 显 示 菜 单 。

指 定 了 对 话 框 指 针 ( 如 果 nWhy 为 MSGF_DIALOGBOX ) , 或 者 是 包 含了 显 示 的 菜 单 ( 如 果 nWhy 为 MSGF_MENU ) 窗 口 的 指 针 。 这 个 指 针 可能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

框 架 调 用 这 个 函 数 以 通 知 应 用 程 序 的 主 窗 口 过 程 , 有 一 个 模 式 对 话框 或 或 菜 单 正 在 进 入 空 闲 状 态 。 当 模 式 对 话 框 或 菜 单 处 理 完 原 来 的

一 条 或 多 条 消 息 , 并 且 没 有 其 它 消 息 在 队 列 中 等 候 时 , 它 就 进 入 空闲 状 态 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_ENTERIDLE

CWnd::OnEnterMenuLoop

afx_msg void OnEnterMenuLoop( BOOL bIsTrackPopupMenu );

参 数

bIsTrackPopupMenu

指 定 了 涉 及 的 菜 单 是 否 是 一 个 弹 出 菜 单 。 如 果 函 数 成 功 , 则 具 有 非 零 值 ; 否 则 为 0 。

说 明

当 进 入 了 菜 单 模 式 循 环 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnExitMenuLoop, WM_ENTERMENULOOP

CWnd::OnEraseBkgnd

afx_msg BOOL OnEraseBkgnd( CDC* pDC );

返 回 值

如 果 它 擦 除 了 背 景 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pDC

指 定 了 设 备 环 境 对 象 。

说 明

当 CWnd 对 象 的 背 景 需 要 被 擦 除 时 ( 例 如 , 当 窗 口 大 小 被 改 变 时 ) , 框 架 就 调

用 这 个 函 数 。 它 被 调 用 以 便 为 绘 图 准 备 无 效 区 域 。

缺 省 的 实 现 使 用 窗 口 类 结 构 中 hbrBackground 成 员 指 定 的 窗 口 类 背 景 刷 子 擦 除窗 口 背 景 。

如 果 hbrBackground 成 员 为 NULL , 你 重 载 的 OnEraseBkgnd 必 须 擦 除 背 景 色 。你 的 重 载 函 数 也 可 以 为 刷 子 调 用 UnrealizeObject 函 数 , 将 目 标 刷 子 的 原 点 与CWnd 的 坐 标 对 齐 , 然 后 选 择 该 刷 子 。

如 果 重 载 的 OnEraseBkgnd 在 响 应 WM_ERASEBKGND 时 处 理 了 这 个 消 息 并 擦除 了 背 景 , 则 应 当 返 回 非 零 值 , 表 明 不 需 要 进 一 步 擦 除 。 如 果 它 返 回 0 , 则 窗口 依 然 被 标 记 为 需 要 擦 除 ( 通 常 , 这 意 味 着 PAINTSTRUCT 结 构 的 fErase 成 员将 为 TRU E ) 。

W indows 假 定 背 景 是 用 MM_TEXT 映 射 模 式 计 算 的 。 如 果 设 备 环 境 使 用 了 其它 映 射 模 式 , 则 擦 除 的 区 域 可 能 不 在 客 户 区 的 可 见 部 分 之 内 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_ICONERASEBKGND, CGdiObject::UnrealizeObject, WM_ERASEBKGND

CWnd::OnExitMenuLoop

afx_msg void OnExitMenuLoop( BOOL bIsTrackPopupMenu );

参 数

bIsTrackPopupMenu

指 明 涉 及 的 菜 单 是 否 是 一 个 弹 出 菜 单 。 如 果 函 数 成 功 , 则 具 有 非 零 值 ; 否 则 为 0 。

说 明

当 退 出 菜 单 模 式 循 环 时 , 框 架 调 用 这 个 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnEnterMenuLoop; W M _EXITMENULOOP

CWnd::OnFontChange

afx_msg void OnFontChange( );

说 明

当 应 用 程 序 改 变 了 字 体 资 源 池 之 后 , 系 统 中 的 所 有 顶 层 窗 口 从 框 架 接 收 到 一 个

OnFontChange 调 用 。

在 系 统 中 加 入 或 删 除 字 体 ( 例 如 , 通 过 W indows 的 AddFontResource 或RemoveFontResource 函 数 ) 的 应 用 程 序 必 须 向 所 有 的 顶 层 窗 口 发 送WM_FONTCHANGE 消 息 。

要 发 送 这 个 消 息 , 使 用 W indows 的 SendMessage 函 数 , 把 hWnd 参 数 设 为

HWND_BROA - DCAST 。

请 参 阅 ::AddFontResource, ::RemoveFontResource, ::SendMessage, WM_FONTCHANGE

CWnd::OnGetDlgCode

afx_msg UINT OnGetDlgCode( );

返 回 值

下 列 值 中 的 一 个 或 多 个 , 指 明 了 应 用 程 序 处 理 的 输 入 类 型 :

  • DLGC_BUTTON 按 钮 ( 通 用 ) 。

  • DLGC_DEFPUSHBUTTON 缺 省 按 钮 。

  • DLGC_HASSETSEL EM_SETSEL 消 息 。

  • DLGC_UNDEFPUSHBUTTON 没 有 缺 省 的 按 钮 处 理 。 ( 应 用 程 序

    可 以 与DLGC_BUTTON 一 起 使 用 这 个 标 志 , 指 明 它 处 理 按 钮 输 入 , 但 是 依 靠 系统 进 行 缺 省 按 钮 处 理 )

  • DLGC_RADIOBUTTON 单 选 按 钮 。

  • DLGC_STATIC 静 态 控 件 。

  • DLGC_WANTALLKEYS 所 有 的 键 盘 输 入 。

  • DLGC_WANTARROWS 箭 头 键 。

  • DLGC_WANTCHARS WM_CHAR 消 息 。

  • DLGC_WANTMESSAGE 所 有 的 键 盘 输 入 。 应 用 程 序 将 这 个 消 息

    传 递 给控 件 。

  • DLGC_WANTTAB TAB 键 。

说 明

通 常 , W indows 处 理 CWnd 控 件 中 所 有 的 箭 头 键 和 TAB 键 输 入 。 通 过 重 载

OnGetDlgCode , CWnd 控 件 可 以 选 择 处 理 特 定 类 型 的 输 入 。

预 定 义 控 件 类 的 缺 省 OnGetDlgCode 函 数 返 回 与 每 个 类 相 对 应 的 代 码 。

请 参 阅 WM_GETDLGCODE

CWnd::OnGetMinMaxInfo

afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );

参 数

lpMMI

指 向 一 个 MINMAXINFO 结 构 , 其 中 包 含 了 有 关 窗 口 的 最 大 化 大 小 和 位置 以 及 最 小 、 最 大 跟 踪 大 小 的 信 息 。 有 关 这 个 结 构 的 更 多 信 息 参 见MINMAXINFO 结 构 。

说 明

每 当 W indows 需 要 知 道 窗 口 的 最 大 化 位 置 或 大 小 , 或 者 最 小 、 最 大 的 跟 踪 大 小时 , 框 架 就 调 用 这 个 成 员 函 数 。 最 大 化 大 小 是 指 当 窗 口 的 边 框 被 完 全 扩 展 时 窗口 的 大 小 。 窗 口 的 最 大 跟 踪 大 小 是 指 用 边 框 改 变 窗 口 的 大 小 时 可 以 达 到 的 最 大窗 口 大 小 。 窗 口 的 最 小 跟 踪 大 小 是 指 用 边 框 改 变 窗 口 大 小 时 可 以 达 到 的 最 小 窗口 大 小 。

W indows 填 充 一 个 点 组 成 的 数 组 , 为 不 同 的 位 置 和 大 小 指 定 了 缺 省 值 。 应 用 程序 可 以 在 OnGetMinMaxInfo 中 改 变 这 些 值 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。

如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_GETMINMAXINFO

CWnd::OnHelpInfo

afx_msg BOOL OnHelpInfo( HELPINFO* lpHelpInfo );

参 数

lpHelpInfo

指向 HELPINFO 结 构 的 指 针 , 其 中 包 含 有 关 菜 单 项 、 控 件 、 对 话 框 或 请求 帮 助 的 窗 口 的 信 息 。

说 明

当 用 户 按 下 F1 键 时 , 框 架 调 用 这 个 函 数 。

如 果 当 按 下 F1 时 菜 单 是 激 活 的 , 则 WM_HELP 被 发 送 到 与 菜 单 相 关 的 窗 口 , 否 则 WM_HELP 被 发 送 到 拥 有 键 盘 焦 点 的 窗 口 。 如 果 没 有 窗 口 拥 有 键 盘 焦 点 , 则 WM_HELP 被 发 送 到 当 前 的 活 动 窗 口 。

请 参 阅 C W inApp::OnHelp, CWinApp::WinHelp

CWnd::OnHScroll

afx_msg void OnHScroll( UINT nSBCode , UINT nPos , CScrollBar* pScrollBar );

参 数

nSBCode

指 定 了 滚 动 条 代 码 , 指 明 了 用 户 的 滚 动 请 求 。 这 个 参 数 可 以 是 下 列 值 之一:

  • SB_LEFT 滚 动 到 最 左 边 。

  • SB_ENDSCROLL 结 束 滚 动 。

  • SB_LINELEFT 向 左 滚 动 。

  • SB_LINERIGHT 向 右 滚 动 。

  • SB_PAGELEFT 向 左 滚 动 一 页 。

  • SB_PAGERIGHT 向 右 滚 动 一 页 。

  • SB_RIGHT 滚 动 到 最 右 边 。

  • SB_THUMBPOSITION 滚 动 到 绝 对 位 置 。 当 前 的 位 置 由 nPos

    参 数 指定。

  • SB_THUMBTRACK 将 滚 动 块 拖 动 到 指 定 的 位 置 。当 前 的 位 置

    nPos

参 数 指 定 。

nPos

如 果 滚 动 条 代 码 为 SB_THUMBPOSITION 或 者 SB_THUMBTRACK , 则指 定 了 滚 动 块 的 位 置 ; 否 则 没 有 使 用 。 取 决 于 初 始 的 滚 动 范 围 , nPos 可能 是 负 的 , 如 有 必 要 应 该 被 强 制 转 换 为 整 数 。

pScrollBar

如 果 滚 动 消 息 来 自 一 个 滚 动 条 控 件 , 则 包 含 了 控 件 的 指 针 。 如 果 用 户 点击 了 窗 口 的 滚 动 条 , 则 这 个 参 数 为 NULL 。 这 个 参 数 可 能 时 临 时 的 , 不能 被 保 存 以 供 将 来 使 用 。

说 明

当 用 户 点 击 窗 口 的 水 平 滚 动 条 时 , 框 架 调 用 这 个 成 员 函 数 。

通 常 在 滚 动 块 要 被 拖 动 的 时 候 , 滚 动 条 代 码 SB_THUMBTRACK 被 应 用 程 序 用来 给 出 一 些 反 馈 。

如 果 应 用 程 序 滚 动 了 滚 动 条 所 控 制 的 内 容 , 它 必 须 用 SetScrollPos 成 员 函 数 复位 滚 动 块 的 位 置 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::SetScrollPos, WM_VSCROLL, WM_HSCROLL

CWnd::OnHScrollClipboard

afx_msg void OnHScrollClipboard( CWnd* pClipAppWnd , UINT nSBCode , UINT

nPos );

参 数

pClipAppWnd

指 定 指 向 剪 贴 板 观 察 器 窗 口 的 指 针 。 这 个 指 针 可 能 时 暂 时 的 , 因 而 不 应该 被 保 存 以 供 将 来 使 用 。

nSBCode

在 低 位 字 指 定 滚 动 条 代 码 , 此 代 码 是 下 列 值 之 一 :

  • SB_BOTTOM 滚 动 到 右 下 角

  • SB_ENDSCROLL 结 束 滚 动

  • SB_LINEDOWN 下 滚 一 行

  • SB_LINEUP 上 滚 一 行

  • SB_PAGEDOWN 下 滚 一 页

  • SB_PAGEUP 上 滚 一 页

  • SB_THUMBPOSITION 滚 动 到 绝 对 位 置 。 当 前 位 置 由 nPos 提 供

  • SB_TOP 滚 动 到 左 上 角

nPos

不 使 用 。

说 明

当 剪 贴 板 数 据 具 有 CF_OWNERDISPLAY 格 式 并 且 剪 贴 板 观 察 器 的 水 平 滚 动 条发 生 一 个 事 件 时 , 剪 贴 板 所 有 者 的 OnHScrollClipboard 成 员 函 数 被 剪 贴 板 观 察器 所 调 用 。 剪 贴 板 所 有 者 应 滚 动 剪 贴 板 图 象 , 使 适 当 的 区 域 无 效 , 并 更 新 滚 动块 的 值 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnVScrollClipboard, WM_HSCROLLCLIPBOARD

CWnd::OnIconEraseBkgnd

afx_msg void OnIconEraseBkgnd( CDC* pDC );

参 数

pDC

用 保 存 该 指 针 。

说 明

当 在 画 出 图 标 之 前 必 须 填 充 图 标 的 背 景 时 , 框 架 为 一 个 最 小 化 CWnd 对 象 调 用这 个 成 员 函 数 。 仅 当 在 窗 口 的 缺 省 实 现 中 定 义 了 类 图 标 时 CWnd 才 会 接 收 该 调用 ; 否 则 调 用 OnEraseBkgnd 。

DefWindowProc 成 员 函 数 用 父 窗 口 的 背 景 刷 子 填 充 图 标 的 背 景 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnEraseBkgnd, WM_ICONERASEBKGND

CWnd::OnInitMenu

afx_msg void OnInitMenu( CMenu* pMenu );

参 数

pMenu

说 明

当 菜 单 要 被 激 活 时 , 框 架 调 用 这 个 成 员 函 数 。 这 个 调 用 在 用 户 点 击 菜 单 条 上 的菜 单 项 或 者 按 下 了 菜 单 键 时 产 生 。 重 载 这 个 函 数 以 在 显 示 之 前 修 改 菜 单 。

OnInitMenu 仅 在 第 一 次 访 问 菜 单 时 调 用 ; 对 于 每 次 访 问 , OnInitMenu 仅 调 用 一次 。 这 意 味 着 , 例 如 , 当 保 持 按 钮 被 按 下 时 , 在 几 个 菜 单 项 之 间 移 动 鼠 标 不 会产 生 新 的 调 用 。 这 个 调 用 不 提 供 有 关 菜 单 项 的 信 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnInitMenuPopup, WM_INITMENU

CWnd::OnInitMenuPopup

afx_msg void OnInitMenuPopup( CMenu* pPopupMenu , UINT nIndex , BOOL

bSysMenu );

参 数

pPopupMenu

指 定 了 弹 出 菜 单 的 菜 单 对 象 。 可 能 时 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

nIndex

指 定 了 主 菜 单 中 弹 出 菜 单 的 索 引 。

bSysMenu

如 果 弹 出 菜 单 为 控 制 菜 单 , 则 为 TRU E ; 否 则 为 FALSE 。

说 明

当 一 个 弹 出 菜 单 将 被 激 活 时 , 框 架 调 用 这 个 成 员 函 数 。 这 允 许 应 用 程 序 在 弹 出菜 单 被 显 示 之 前 修 改 它 , 而 不 需 要 改 变 整 个 菜 单 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnInitMenu, W M _ INITMENUPOPUP

CWnd::OnKeyDown

afx_msg void OnKeyDown( UINT nChar , UINT nRepCn t, UINT nFlags );

参 数

nChar

指 定 了 给 定 键 的 虚 拟 键 码 。

nRepCnt

重 复 计 数 ( 用 户 按 住 键 引 起 的 重 复 击 键 数 目 ) 。

nFlags

指 定 了 扫 描 码 、 暂 态 键 码 、 原 来 的 键 状 态 和 上 下 文 代 码 , 如 下 面 的 列 表所 示 :

值 描述

0 – 7 扫 描 码 ( 依 赖 于 OEM 的 值 )

  1. 扩 展 键 , 比 如 功 能 键 或 数 字 键 盘 上 的 键 ( 如 果 它 是 扩

    展 键 , 则为 1 )

  2. – 10 未 使 用

11 – 12 W indows 内 部 使 用

  1. 上 下 文 代 码 ( 如 果 按 下 键 时 ALT 键 时 被 按 下 的 , 则 为 1

    ; 否则 为 0 )

续表

  1. 原 来 的 键 状 态 ( 如 果 在 调 用 之 前 键 时 按 下 的 , 则 为 1

    ; 如 果 键是 弹 起 的 , 则 为 0 )

  2. 暂 态 ( 如 果 键 正 在 被 释 放 , 则 为 1 ; 如 果 键 正 被 按 下

    , 则 为 0 )

对 于 W M _ K E Y D O W N 消 息 , 键 暂 态 位 ( 15 位 ) 为 0 , 并 且 上 下 文 代 码 位 ( 13

位 ) 为 0 。

说 明

当 用 户 按 下 了 一 个 非 系 统 键 时 , 框 架 调 用 这 个 成 员 函 数 。 非 系 统 键 是 指 当 ALT

键 为 被 按 下 时 按 下 的 键 盘 键 或 者 当 CWnd 拥 有 输 入 焦 点 时 按 下 的 键 盘 键 。

由 于 自 动 重 复 , 在 调 用 OnKeyUp 成 员 函 数 之 前 可 能 会 产 生 多 个 OnKeyDown 调 用 。 指 明 原 来 的 键 状 态 的 位 可 以 被 用 来 确 定 OnKeyDown 调 用 时 是 第 一 次 被按 下 还 是 重 复 的 按 下 状 态 。

对 于 IBM 增 强 101 和 102 键 键 盘 , 增 强 键 包 括 键 盘 主 体 部 分 的 右 ALT 键 和 右CTRL 键 ;数 字 键 盘 左 侧 的 INS ,DEL ,H O M E ,END ,PAGE UP ,PAGE DOWN 和 箭 头 键 ; 以 及 数 字 键 盘 上 的 斜 杠 ( /) 和 ENTER 键 。 一 些 其 它 的 键 盘 可 能 支持 nFlags 中 的 扩 展 键 位 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。

如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_CHAR, W M _KEYUP, WM_KEYDOWN

CWnd::OnKeyUp

afx_msg void OnKeyUp( UINT nCha r , UINT nRepCnt , UINT nFlags );

参 数

nChar

指 定 了 给 定 键 的 虚 拟 键 码 。

nRepCnt

重 复 计 数 ( 用 户 按 住 键 引 起 的 重 复 击 键 数 目 ) 。

nFlags

指 定 了 扫 描 码 、 暂 态 键 码 、 原 来 的 键 状 态 和 上 下 文 代 码 , 如 下 面 的 列 表所 示 :

值 描 述

0 – 7 扫 描 码 ( 依 赖 于 OEM 的 值 ) 。 高 位 字 的 低 字 节

  1. 扩 展 键 ,比 如 功 能 键 或 数 字 键 盘 上 的 键( 如 果 它 时 扩

    展 键 则 为 1 )

  2. – 10 未 使 用

续 表

11 – 12 W indows 内 部 使 用

  1. 上 下 文 代 码 ( 如 果 按 下 键 时 ALT 键 时 被 按 下 的 , 则 为 1

    ; 否 则为 0 )

  2. 原 来 的 键 状 态 ( 如 果 在 调 用 之 前 键 时 按 下 的 , 则 为 1

    ; 如 果 键 是弹 起 的 , 则 为 0 )

  3. 暂 态 ( 如 果 键 正 在 被 释 放 , 则 为 1 ; 如 果 键 正 被 按 下

    , 则 为 0 )

对 于 W M _ K E Y D O W N 消 息 , 键 暂 态 位 ( 15 位 ) 为 1 , 并 且 上 下 文 代 码 位 ( 13

位 ) 为 0 。

说 明

当 一 个 非 系 统 键 被 释 放 的 时 候 , 框 架 调 用 这 个 成 员 函 数 。 非 系 统 键 是 指 当 ALT

键 未 按 下 时 按 下 的 键 盘 键 , 或 者 是 当 CWnd 拥 有 输 入 焦 点 时 按 下 的 键 盘 键 。

对 于 IBM 增 强 101 和 102 键 键 盘 , 增 强 键 包 括 键 盘 主 体 部 分 的 右 ALT 键 和 右CTRL 键 ;数 字 键 盘 左 侧 的 INS ,DEL ,H O M E ,END ,PAGE UP ,PAGE DOWN 和 箭 头 键 ; 以 及 数 字 键 盘 上 的 斜 杠 ( /) 和 ENTER 键 。 一 些 其 它 的 键 盘 可 能 支持 nFlags 中 的 扩 展 键 位 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的

参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_CHAR, W M _KEYUP, CWnd::Default, WM_KEYDOWN

CWnd::OnKillFocus

afx_msg void OnKillFocus( CWnd* pNewWnd );

参 数

pNewWnd

指 定 了 获 得 输 入 焦 点 的 窗 口 指 针 ( 可 能 为 NULL , 或 可 能 是 临 时 的 ) 。

说 明

框 架 在 失 去 输 入 焦 点 之 后 立 刻 调 用 这 个 成 员 函 数 。

如 果 CWnd 显 示 了 一 个 插 字 符 , 则 此 时 必 须 销 毁 插 字 符 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::SetFocus, WM_KILLFOCUS

CWnd::OnLButtonDblClk

afx_msg void OnLButtonDblClk( UINT nFlags , CPoint point );

参 数

nFlags

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如 果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

point

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 双 击 鼠 标 左 键 时 框 架 调 用 这 个 成 员 函 数 。

只 有 具 有 CS_DBLCLKS WNDCLASS 风 格 的 窗 口 才 接 收 OnLButtonDlbClk 调

用 。 这 是 微 软 基 础 类 窗 口 的 缺 省 状 态 。 当 用 户 按 下 、 释 放 , 然 后 在 系 统 规 定 的双 击 时 间 限 制 之 内 再 次 按 下 鼠 标 左 键 时 , W indows 就 调 用 OnLButtonDblClk 。双 击 鼠 标 左 键 实 际 产 生 四 个 事 件 : WM_LBUTTON D O W N , WM_LBUTTONUP 消 息 , WM_LBUTTONDBLCLK 调 用 , 以 及 释 放 按 钮 时 的 另 一 个WM_LBUTTONUP 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnLButtonDown, CWnd::OnLButtonUp, WM_LBUTTONDBLCLK

CWnd::OnLButtonDown

afx_msg void OnLButtonDown( UINT nFlags , CPoint point );

参 数

nFlags

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如果 CTRL 键 被 按 下 , 则 设 置 此 位 。

point

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 按 下 鼠 标 左 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnLButtonDblClk, CWnd::OnLButtonUp, WM_LBUTTONDOWN

CWnd::OnLButtonUp

afx_msg void OnLButtonUp( UINT nFlag s, CPoint point );

nFlags

point

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如 果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 放 开 鼠 标 左 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnLButtonDblClk, CWnd::OnLButtonDown, WM_LBUTTONUP

CWnd::O n M ButtonDblClk

afx_msg void OnMButtonDblClk( UINT nFlags , CPoint point );

参 数

nFlags

point

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 双 击 鼠 标 中 键 时 框 架 调 用 这 个 成 员 函 数 。

只 有 具 有 CS_DBLCLKS WNDCLASS 风 格 的 窗 口 才 接 收 OnMButtonDlbClk 调用 。 这 是 微 软 基 础 类 窗 口 的 缺 省 状 态 。 当 用 户 按 下 、 释 放 , 然 后 在 系 统 规 定 的

双 击 时 间 限 制 之 内 再 次 按 下 鼠 标 中 键 时 , W indows 就 调 用 OnMButtonDblClk 。双 击 鼠 标 中 键 实 际 产 生 四 个 事 件 :WM_MBUTTON D O W N ,WM_MBUTTONUP 消 息 , W M _ M BUTTONDBLCLK 调 用 , 以 及 释 放 按 钮 时 的 另 一 个WM_MBUTTONUP 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::On M ButtonDown, CWnd::On M ButtonUp, W M _ M BUTTONDBLCLK

CWnd::OnMButtonDown

afx_msg void On M ButtonDown( UINT nFlag s, CPoint point );

参 数

nFlags

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

point

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 按 下 鼠 标 中 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::On M ButtonDblClk, CWnd::OnMButtonUp, W M _ M B U T T O N D O W N

CWnd::OnMButtonUp

afx_msg void OnMButtonUp( UINT nFlags , CPoint point );

nFlags

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

point

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 放 开 鼠 标 中 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnMButtonDblClk, CWnd::O nM ButtonDown, WM_MBUTTONUP

CWnd::OnMDIActivate

afx_msg void OnMDIActivate( BOOL bActivate , CWnd* pActivateWnd , CWnd*

pDeactivate - Wnd );

参 数

bActivate

如 果 子 窗 口 要 被 激 活 ,则为 TRUE ;如 果 要 被 取 消 激 活 状 态 ,则为 FALSE 。

pActivateWnd

包 含 了 要 激 活 的 M D I 子 窗 口 的 指 针 。 当 被 一 个 M D I 子 窗 口 接 收 的 时 候 , pActiveWnd 中 包 含 了 要 激 活 的 子 窗 口 指 针 。 这 个 指 针 可 能 时 临 时 的 , 不应 被 保 存 以 供 将 来 使 用 。

pDeactivateWnd

包 含 了 将 失 去 激 活 状 态 的 M D I 子 窗 口 的 指 针 。 这 个 指 针 可 能 时 临 时 的 , 不 应 被 保 存 以 供 将 来 使 用 。

说 明

框 架 为 被 激 活 的 子 窗 口 和 取 消 激 活 状 态 的 子 窗 口 调 用 这 个 成 员 函 数 。

一 个 MDI 子 窗 口 可 以 与 MDI 框 架 窗 口 独 立 地 被 激 活 。 当 框 架 窗 口 被 激 活 时 ,

最 近 在 OnMDIActive 调 用 中 被 激 活 的 子 窗 口 接 收 到 一 个 WM_NCACTIVATE 消 息 以 画 出 活 动 窗 口 的 边 框 和 标 题 条 , 但 是 它 不 接 收 另 一 个 OnMDIActivate 调用 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CMDIFrameWnd::MDIActivate, WM_MDIACTIVATE

CWnd::OnMeasureItem

afx_msg void OnMeasureItem( int nIDCtl , LPMEASUREITEMSTRUCT

lpMeasureItemSt - ruct );

参 数

nIDCtl

控 件 的 ID 。

lpMeasureItemStruct

指 向 一 个 MEASUREITEMSTRUCT 数 据 结 构 , 其 中 包 含 自 画 控 件 的 大小。

说 明

当 控 件 被 创 建 的 时 候 , 框 架 为 自 画 按 钮 、 组 合 框 、 列 表 框 或 菜 单 项 调 用 这 个 成员 函 数 。

重 载 这 个 函 数 并 填 充 lpMeasureItemStruct 指 向 的 MEASUREITEMSTRUCT 数据 结 构 , 然 后 返 回 ; 这 将 通 知 W indows 控 件 的 大 小 , 并 使 W indows 能 够 正 确地 处 理 控 件 的 用 户 交 互 。

如 果 列 表 框 或 组 合 框 是 用 LBS_OWNERDRAWVARIABLE 或CBS_OWNERDRAWVARIA- BLE 风 格 创 建 的 , 则 框 架 为 控 件 中 的 每 一 个 项 调用 这 个 函 数 ; 否 则 这 个 函 数 只 被 调 用 一 次 。

在 发 送 WM_INITDIALOG 消 息 之 前 , W indows 为 用 OWNERDRAWFIXED 风格 创 建 的 组 合 框 和 列 表 框 的 拥 有 者 发 出 对 OnMeasureItem 的 调 用 。 其 结 果 是 , 当 拥 有 者 接 收 到 这 个 调 用 时 , W indows 还 没 有 确 定 在 控 件 中 使 用 的 字 体 的 高 度和 宽 度 ; 需 要 这 些 值 的 函 数 调 用 和 计 算 应 该 发 生 在 应 用 程 序 或 库 的 主 函 数 中 。

如 果 要 测 量 的 的 项 是 CMenu , CListBox 或 CComboBox 对 象 , 则 将 调 用 适 当 的类 的 虚 函 数 MeasureItem 。 重 载 适 当 的 控 件 类 的 MeasureItem 成 员 函 数 以 计 算 并设 置 每 个 项 的 大 小 。

仅 当 控 件 类 是 在 运 行 时 创 建 , 或 者 它 是 用 LBS_OWNERDRAWVARIABLE 或CBS_OWNERDRAWVARIABLE 风 格 创 建 的 时 候 , OnMeasureItem 才 会 被 调用 。 这 是 因 为 WM_MEASUREITEM 消 息 时 在 控 件 创 建 过 程 的 早 期 被 发 送 的 。

如 果 你 使 用 DDX_ Contro l, SubclassDlgItem 或 SubclassWindow 进 行 了 子 类 化 , 则 子 类 化 过 程 通 常 发 生 在 创 建 过 程 之 后 。 因 此 , 在 控 件 的 OnChildNotify 函 数中 无 法 处 理 WM_MEASUREITEM 消 息 , 这 是 MFC 用 来 实 现ON_WM_MEASUREITEM_REFLECT 的 机 制 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CMenu::MeasureItem, CListBox::MeasureItem, CComboBox::MeasureItem, WM_MEASUREITEM

CWnd::OnMenuChar

afx_msg LRESULT OnMenuChar( UINT nCha r , UINT nFlag s, CMenu* pMenu );

返 回 值

返 回 值 的 高 位 字 中 必 须 包 含 下 列 命 令 代 码 之 一 :

描述

0

告 诉 W indows 废 弃 用 户 按 下 的 字 符 , 并 在 系 统 扬 声 器 中 产 生 一 个
短 响

1

告 诉

W indows 关 闭 当 前 的 菜 单

2

通 知 W indows 在 返 回 值 的 低 位 字 中 包 含 了 指 定 项 的 号 码 。 这 个 项

是 W indows 选 中 的

如 果 高 位 字 中 包 含 0 或 1 , 则 低 位 字 被 忽 略 。 当 使 用 了 加 速 键 ( 快 捷 方 式 ) 选中 菜 单 中 的 位 图 时 , 应 用 程 序 应 当 处 理 这 个 消 息 。

参 数

nChar nFlags

pMenu

依 赖 于 编 译 设 置 , 指 定 了 用 户 按 下 的 ANSI 或 Unicode 字 符 。

如 果 菜 单 是 弹 出 菜 单 ,则 包 含 了 MF_POPUP 标 志 。如 果 菜 单 是 控 制 菜 单 , 则 包 含 了 MF_SYSMENU 标 志 。

包 含 了 选 中 菜 单 的 指 针 。 这 个 指 针 可 能 时 临 时 的 , 不 能 被 保 存 以 供 将 来使 用 。

说 明

当 用 户 按 下 一 个 不 能 与 当 前 菜 单 中 任 何 预 定 义 的 助 记 符 相 匹 配 的 菜 单 助 记 符时 , 框 架 就 调 用 这 个 成 员 函 数 。 它 被 发 送 到 拥 有 这 个 菜 单 的 CWnd 对 象 。 当 用户 按 下 ALT 以 及 其 它 任 何 键 时 , 也 会 调 用 OnMenuChar , 即 使 这 些 键 并 不 对 应助 记 符 字 符 。 在 这 种 情 况 下 , pMenu 指 向 CWnd 拥 有 的 菜 单 , nFlags 为 0 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_MENUCHAR

CWnd::OnMenuSelect

afx_msg void OnMenuSelect( UINT nItemID , UINT nFlags H M E N U hSysMenu );

参 数

nItemID

标 识 了 被 选 中 的 项 。 如 果 选 中 项 是 一 个 菜 单 项 , 则 nItemID 包 含 了 菜 单项 ID 。 如 果 选 中 项 包 含 了 弹 出 菜 单 , 则 nItemID 包 含 了 弹 出 菜 单 索 引 ,

nFlags

hSysMenu 中 包 含 了 主 菜 单 ( 用 户 点 击 的 ) 的 句 柄 。

包 含 下 列 菜 单 标 志 的 组 合 :

  • MF_BITMAP 该 项 是 位 图 。

  • MF_CHECKED 该 项 被 选 中 。

  • MF_DISABLED 该 项 被 禁 止 。

  • MF_GRAYED 该 项 被 变 灰 。

  • MF_MOUSESELECT 该 项 是 用 鼠 标 选 中 的 。

  • MF_OWNERDRAW 该 项 是 一 个 自 画 项 。

  • MF_POPUP 该 项 包 含 了 一 个 弹 出 菜 单 。

  • MF_SEPARATOR 该 项 是 一 个 菜 单 分 隔 符 。

  • MF_SYSMENU 该 项 包 含 在 控 制 菜 单 中 。

hSysMenu

如果 nFlags 中 包 含 了 MF_SYSMENU , 标 识 了 与 消 息 相 关 的 菜 单 。 如 果nFlags 中 包 含 了 MF_POPU P , 则 标 识 了 主 菜 单 的 句 柄 。 如 果 nFlags 中既 没 有 MF_SYSMENU 也 没 有 MF_POPUP , 则 没 有 使 用 。

说 明

如 果 CWnd 对 象 与 一 个 菜 单 相 关 联 , 则 当 用 户 选 择 一 个 菜 单 项 时 , 框 架 调 用

OnMenuSelec t。

如 果 nFlags 中 为 0xFFFF 并 且 hSysMenu 为 0 , 则 W indows 已 经 因 为 用 户 按 下

ESC 键 或 在 菜 单 外 点 击 而 关 闭 了 菜 单 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_MENUSELECT

CWnd::OnMouseActivate

afx_msg int OnMouseActivate( CWnd* pDesktopWnd , UINT nHitTest , UINT

message );

返 回 值

指 定 了 是 否 要 激 活 CWnd 以 及 是 否 放 弃 鼠 标 事 件 。 它 必 须 是 下 列 值 之 一 :

  • MA_ACTIVATE 激 活 CWnd 对 象 。

  • MA_NOACTIVATE 不 激 活 CWnd 对象 。

  • MA_ACTIVATEANDEAT 激 活 CWnd 对 象 并 放 弃 鼠 标 事 件 。

  • MA_NOACTIVATEANDEAT 不 激 活 CWnd 对 象 并 放 弃 鼠 标 事 件 。

参 数

pDesktopWnd

指 定 了 要 激 活 的 窗 口 的 顶 层 父 窗 口 的 指 针 。 这 个 指 针 可 能 是 临 时 的 , 不能 被 保 存 。

nHitTest

指 定 了 击 中 测 试 区 域 代 码 。 击 中 测 试 是 用 来 确 定 光 标 的 位 置 的 。

message

指 定 了 鼠 标 消 息 。

说 明

当 光 标 位 于 非 激 活 窗 口 内 并 且 用 户 按 下 了 鼠 标 按 钮 时 , 框 架 就 调 用 这 个 成 员 函数 。

缺 省 的 实 现 在 进 行 任 何 处 理 之 前 把 这 个 消 息 传 递 给 父 窗 口 。 如 果 父 窗 口 返 回

TRU E , 则 处 理 过 程 中 止 。

有 关 不 同 的 击 中 测 试 区 域 代 码 的 描 述 参 见 OnNcHitTest 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的

  • 请参阅 CWnd::OnNcHitTest, W M _ MOUSEACTIVATE CWnd::OnMouseMove

afx_msg void OnMouseMove( UINT nFlags , CPoint point );

参数

nFlags

指 明 是 否 按 下 了 不 同 的 虚 拟 键 。 这 个 参 数 可 以 是 下 列 值 的 组 合 : MK_CONTROL 如 果 CTRL 键 被 按 下 , 则 设 置 此 位 。MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

point

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。说明

当 鼠 标 光 标 移 动 时 , 框 架 调 用 这 个 成 员 函 数 。 如 果 鼠 标 没 有 被 捕 获 , 则WM_MOUSEMOVE 由 鼠 标 下 方 的 窗 口 所 接 收 ; 否 则 消 息 被 发 往 捕 获 了鼠 标 的 窗 口 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的

请参阅 CWnd::SetCapture, CWnd::OnNCHitTest, WM_MOUSEMOVE CWnd::OnMouseWheel

afx_msg BOOL OnMouseWheel( UINT nFlags , short zDelta , CPoint pt );

返 回 值

如 果 允 许 鼠 标 轮 滚 动 , 则 返 回 非 零 值 ; 否 则 返 回 0 。参数

nFlags

指 明 是 否 按 下 了 虚 拟 键 。 这 个 参 数 可 以 是 下 列 值 的 组 合 :

MK_CONTROL 如 果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

zDelta

指 明 了 旋 转 的 距 离 。 zDelta 值 以 WHEEL_DELTA , 即 120 的 倍 数 或 部 分的 形 式 表 达 。 小 于 零 的 数 表 明 往 回 滚 动 ( 向 着 用 户 ) , 而 大 于 零 的 数 表明 滚 向 远 处 ( 离 开 用 户 ) 。 用 户 可 以 在 鼠 标 软 件 中 改 变 滚 轮 设 置 以 反 转这 种 响 应 。 有 关 这 个 参 数 的 更 多 信 息 参 见 说 明 部 分 。

pt

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 旋 转 鼠 标 滚 轮 并 达 到 滚 轮 的 下 一 个 刻 度 时 , 框 架 就 调 用 这 个 成 员 函 数 。除 非 被 重 载 , 否 则 OnMouseWheel 调 用 WM_MOUSEWHEEL 的 缺 省 处 理 。W indows 自 动 将 该 消 息 转 发 到 具 有 输 入 焦 点 的 控 件 或 子 窗 口 。 W in32 函 数DefWindowProc 将 该 消 息 上 传 到 拥 有 它 的 窗 口 。

zDelta 参 数 是 WHEEL_DELTA 的 倍 数 , 它 被 设 为 120 。 这 个 值 是 要 采 取 的 动 作的 开 端 , 这 一 类 动 作 ( 比 如 向 前 滚 动 到 下 一 个 刻 度 ) 必 须 为 每 一 个 delta 产 生 。

delta 被 设 为 120 , 以 允 许 将 来 使 用 更 高 精 度 的 滚 轮 , 例 如 没 有 刻 度 的 自 由 旋 转滚 轮 。 这 种 设 备 在 每 次 旋 转 是 可 能 会 发 送 多 个 消 息 , 但 是 每 次 消 息 中 的 值 更 小 。要 支 持 这 个 可 能 性 , 或 者 可 以 累 计 输 入 的 delta 值 , 直 到 达 到 一 个WHEEL_DELTA ( 因 此 你 达 到 与 给 定 delta 的 旋 转 相 同 的 响 应 ) , 或 者 滚 动 部分 行 以 响 应 更 频 繁 的 消 息 。 你 可 以 选 择 你 的 滚 动 精 度 并 累 计 delta 值 直 到 达 到WHEEL_DELTA 。

重 载 这 个 成 员 函 数 以 提 供 你 自 己 的 鼠 标 滚 轮 滚 动 特 性 。

注意 OnMouseWheel 为 Windows NT 4.0 处 理 消 息 。 对 于 Windows 95 或Windows NT 3.51 的 消 息 处 理 , 应 使 用 OnRegisteredMouseWheel 。

请 参 阅 mouse_event

CWnd::OnMove

afx_msg void OnMove( int x , int y );

参 数

x

指 定 了 客 户 区 左 上 角 的 新 x 轴 坐 标 。 对 于 重 叠 式 和 弹 出 式 窗 口 , 坐 标 是用 屏 幕 坐 标 给 出 的 , 对 于 子 窗 口 , 是 用 父 窗 口 的 客 户 区 坐 标 给 出 的 。

y

指 定 了 客 户 区 左 上 角 的 新 y 轴 坐 标 。 对 于 重 叠 式 和 弹 出 式 窗 口 , 坐 标 是用 屏 幕 坐 标 给 出 的 , 对 于 子 窗 口 , 是 用 父 窗 口 的 客 户 区 坐 标 给 出 的 。

说 明

框 架 在 CWnd 对 象 被 移 动 之 后 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的

参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 W M _ M O V E

CWnd::OnMoving

afx_msg void OnMoving( UINT nSide , LPRECT lpRect );

参 数

nSide lpRect

被 移 动 的 窗 口 的 边 界 。

CRect 或 RECT 的 地 址 , 其 中 包 含 了 项 的 坐 标 。

说 明

当 用 户 移 动 CWnd 对 象 时 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_MOVING

CWnd::OnNcActivate

afx_msg BOOL OnNcActivate( BOOL bActive );

返 回 值

如 果 W indows 必 须 进 行 缺 省 处 理 , 则 返 回 非 零 值 ; 如 果 要 防 止 标 题 条 或 图 标 变为 非 激 活 状 态 , 则 为 0 。

参 数

bActive

表 明 需 要 改 变 标 题 条 或 图 标 以 指 明 活 动 或 非 活 动 状 态 。 如 果 要 画 出 活 动的 标 题 条 或 图 标 , 则 bActive 参 数 为 TRUE 。 如 果 要 画 出 非 活 动 的 标 题 条或 图 标 , 则 为 FALSE 。

说 明

当 需 要 改 变 非 客 户 区 以 指 明 活 动 和 非 活 动 状 态 时 , 框 架 调 用 这 个 成 员 函 数 。 如果 bActive 为 TRUE , 则 缺 省 的 实 现 用 活 动 颜 色 画 出 标 题 条 和 标 题 条 文 本 ; 如果 bActive 为 FALSE , 则 用 非 活 动 颜 色 画 出 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::Default, WM_NCACTIVATE

CWnd::OnNcCalcSize

afx_msg void OnNcCalcSize( BOOL bCalcValidRects , NCCALCSIZE_PARAMS*

lpncsp );

参 数

bCalcValidRects

指 定 应 用 程 序 是 否 需 要 指 定 客 户 区 的 哪 个 部 分 包 含 了 有 效 信 息 。 W indows 将 把有 效 信 息 拷 贝 到 新 客 户 区 的 指 定 位 置 。 如 果 这 个 参 数 为 TRUE , 则 应 用 程 序 必须 指 定 客 户 区 的 哪 个 部 分 有 效 。

lpncsp

指 向 一 个 NCCALCSIZE_PARAMS 数 据 结 构 , 其 中 包 含 了 应 用 程 序 可 用 于 计 算CWnd 矩 形 ( 包 括 客 户 区 、 边 框 、 标 题 和 滚 动 条 等 ) 的 新 大 小 和 位 置 的 信 息 。说 明

当 客 户 区 的 大 小 和 位 置 需 要 重 新 计 算 时 , 框 架 调 用 这 个 成 员 函 数 。 通 过 处 理 这

个 消 息 , 应 用 程 序 可 以 在 窗 口 的 大 小 和 位 置 发 生 变 化 时 控 制 窗 口 客 户 区 的 内容 。

不 论 bCalcValidRects 的 值 是 什 么 , NCCALCSIZE_PARAMS 结 构 的 rgrc 结 构成 员 所 指 向 的 数 组 中 的 第 一 个 矩 形 中 包 含 了 窗 口 的 坐 标 。 对 于 一 个 子 窗 口 , 这个 坐 标 是 相 对 于 父 窗 口 的 客 户 区 的 。 对 于 顶 层 窗 口 , 该 坐 标 是 屏 幕 坐 标 。 应 用程 序 应 当 修 改 rgrc[0] 矩 形 以 反 映 客 户 区 的 大 小 和 位 置 。

rgrc[1] 和 rgrc[2] 矩 形 仅 当 bCalcValidRects 为 TRUE 时 有 效 。在 这 种 情 况 下 ,rgrc[1] 矩 形 中 包 含 了 被 移 动 或 改 变 大 小 的 窗 口 的 坐 标 。 rgrc[2] 矩 形 中 包 含 了 窗 口 被 移动 之 前 的 客 户 区 坐 标 。 所 有 的 坐 标 都 是 相 对 于 父 窗 口 或 屏 幕 的 。

缺 省 的 实 现 根 据 窗 口 特 征 计 算 客 户 区 的 大 小 ( 是 否 有 滚 动 条 , 菜 单 等 ) , 并 且将 结 果 放 入 lpncsp 。

注 意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消 息 。 传递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。 如 果 你 调 用了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的 参 数 ( 而 不 是 你 提供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_NCCALCSIZE, CWnd::MoveWindow, CWnd::SetWindowPos CWnd::OnNcCreate

afx_msg BOOL OnNcCreate( LPCREATESTRUCT lpCreateStruct );

返 回 值

如 果 创 建 了 非 客 户 区 , 则 返 回 非 零 值 。 如 果 发 生 错 误 , 则 返 回 0 ; 在 这 种 情 况下 , Create 函 数 将 返 回 错 误 。

参 数

lpCreateStruct

指 向 CWnd 的 CREATESTRUCT 数 据 结 构 。说 明

当 CWnd 对 象 第 一 次 被 创 建 时 , 框 架 在 W M _CREATE 消 息 之 前 调 用 这 个 成 员函 数 。

注 意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消 息 。 传递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。 如 果 你 调 用了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的 参 数 ( 而 不 是 你 提供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::Create, CWnd::CreateEx, WM_NCCREATE

CWnd::OnNcDestroy

afx_msg void OnNcDestroy( );

说 明

当 非 客 户 区 即 将 被 销 毁 时 , 框 架 调 用 这 个 函 数 , 这 是 W indows 的 窗 口 被 销 毁 时调 用 的 最 后 一 个 成 员 函 数 。 缺 省 的 实 现 执 行 一 些 清 除 工 作 , 然 后 调 用 虚 成 员 函数 PostNcDestroy 。

如 果 你 希 望 执 行 自 己 的 清 除 操 作 , 例 如 删 除 , 则 应 重 载 PostNcDestroy。 如 果 你重 载 了 OnNcDestroy, 则 必 须 调 用 基 类 的 OnNcDestroy 以 确 保 内 部 为 窗 口 分 配的 内 存 都 被 释 放 。

请 参 阅 CWnd::DestroyWindow, CWnd::OnNcCreate, WM_NCDESTROY,

CWnd::Default, CWnd::PostNcDestroy CWnd::OnNcHitTest

afx_msg UINT OnNcHitTest( CPoint point );

返 回 值

下 面 列 出 的 鼠 标 击 中 测 试 枚 举 值 之 一 。参 数

point

包 含 了 光 标 的 x 轴 和 y 轴 坐 标 。 这 些 坐 标 总 是 用 屏 幕 坐 标 给 出 的 。说 明

每 当 鼠 标 移 动 时 , 框 架 就 为 包 含 光 标 ( 或 者 是 用 SetCapture 成 员 函 数 捕 获 了 鼠标 输 入 的 CWnd 对 象 ) 的 CWnd 对 象 调 用 这 个 成 员 函 数 。

注 意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消 息 。 传递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。 如 果 你 调 用了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的 参 数 ( 而 不 是 你 提供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::GetCapture, WM_NCHITTEST

鼠 标 枚 举 值

  • HTBORDER 在 不 具 有 可 变 大 小 边 框 的 窗 口 的 边 框 上 。

  • HTBOTTOM 在 窗 口 的 水 平 边 框 的 底 部 。

  • HTBOTTOMLEFT 在 窗 口 边 框 的 左 下 角 。

  • HTBOTTOMRIGHT 在 窗 口 边 框 的 右 下 角 。

  • HTCAPTION 在 标 题 条 中 。

  • HTCLIENT 在 客 户 区 中 。

  • HTERROR 在 屏 幕 背 景 或 窗 口 之 间 的 分 隔 线 上 ( 与 HTNOWHERE

    相 同 , 除 了 W indows 的 DefWndProc 函 数 产 生 一 个 系 统 响 声 以 指 明 错 误 ) 。

  • HTGROWBOX 在 尺 寸 框 中 。

  • HTHSCROLL 在 水 平 滚 动 条 上 。

  • HTLEFT 在 窗 口 的 左 边 框 上 。

  • HTMAXBUTTON 在 最 大 化 按 钮 上 。

  • HTMENU 在 菜 单 区 域 。

  • H T M INBUTTON 在 最 小 化 按 钮 上 。

  • HTNOWHERE 在 屏 幕 背 景 或 窗 口 之 间 的 分 隔 线 上 。

  • HTREDUCE 在 最 小 化 按 钮 上 。

  • HTRIGHT 在 窗 口 的 右 边 框 上 。

  • HTSIZE 在 尺 寸 框 中 。 ( 与 HTGROWBOX 相 同 )

  • HTSYSMENU 在 控 制 菜 单 或 子 窗 口 的 关 闭 按 钮 上 。

  • HTTOP 在 窗 口 水 平 边 框 的 上 方 。

  • HTTOPLEFT 在 窗 口 边 框 的 左 上 角 。

  • HTTOPRIGHT 在 窗 口 边 框 的 右 上 角 。

  • HTTRANSPARENT 在 一 个 被 其 它 窗 口 覆 盖 的 窗 口 中 。

  • HTVSCROLL 在 垂 直 滚 动 条 中 。

  • HTZOOM 在 最 大 化 按 钮 上 。

CWnd::OnNcLButtonDblClk

afx_msg void OnNcLButtonDblClk( UINT nHitTes t, CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 双 击 鼠 标 左 键 时 , 框 架 调 用 这 个 成 员 函 数 。如 果 合 适 的 话 , 将 发 出 WM_SYSCOMMAND 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的

请 参 阅 WM_NCLBUTTONDBLCLK, CWnd::OnNcHitTest

CWnd::OnNcLButtonDown

afx_msg void OnNcLButtonDown( UINT nHitTest , CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 按 下 鼠 标 左 键 时 , 框 架 调 用 这 个 成 员 函 数 。如 果 合 适 的 话 , 将 发 出 WM_SYSCOMMAND 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消

如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcLButtonDblClk, CWnd::OnNcLButtonUp,CWnd:: OnSysCommand, WM_NCLBUTTONDOWN, CWnd::Default

CWnd::OnNcLButtonUp

afx_msg void OnNcLButtonUp( UINT nHitTes t, CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 放 开 鼠 标 左 键 时 , 框 架 调 用 这 个 成 员 函 数 。如 果 合 适 的 话 , 将 发 出 WM_SYSCOMMAND 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcLButtonDown, CWnd::OnSysCommand, WM_NCLBUTTONUP

CWnd::OnNcMButtonDblClk

afx_msg void OnNcMButtonDblClk( UINT nHitTest , CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 双 击 鼠 标 中 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcMButtonDown, CWnd::OnNcMButtonUp,WM- _NCMBUTTONDBLCLK

CWnd::OnNcMButtonDown

afx_msg void OnNcMButtonDown( UINT nHitTest , CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 按 下 鼠 标 中 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcMButtonDblClk,CWnd:: OnNcMButtonUp,WM_NCMBUTTONDOWN

CWnd::OnNcMButtonUp

afx_msg void OnNcMButtonUp( UINT nHitTes t, CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 放 开 鼠 标 右 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcMButtonDblClk, CWnd::OnNcMButtonDown, WM_NCMBUTTONUP

CWnd::OnNcMouseMove

afx_msg void OnNcMouseMove( UINT nHitTes t, CPoint point );

参 数

nHitTest

point

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 光 标 在 CWnd 的 非 客 户 区 内 移 动 时 , 框 架 调 用 这 个 成 员 函 数 。 如 果 合 适 的 话 , 将 发 出 WM_SYSCOMMAND 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnSysCommand, WM_NCMOUSEMOVE

CWnd::OnNcPaint

afx_msg void OnNcPaint( );

当 非 客 户 区 需 要 重 画 时 , 框 架 调 用 这 个 成 员 函 数 。 缺 省 的 实 现 画 出 窗 口 的 框 架 。

应 用 程 序 可 以 重 载 这 个 调 用 并 画 出 自 己 定 义 的 窗 口 边 框 。 裁 剪 区 域 通 常 是 矩形 , 即 使 框 架 的 形 状 已 经 改 变 。

请 参 阅 WM_NCPAINT

CWnd::OnNcRButtonDblClk

afx_msg void OnNcRButtonDblClk( UINT nHitTes t, CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

当 用 户 在 CWnd 的 非 客 户 区 内 双 击 鼠 标 右 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcRButtonDown, CWnd::OnNcRButtonUp,WM_ NCRBUTTONDBLCLK

CWnd::OnNcRButtonDown

afx_msg void OnNcRButtonDown( UINT nHitTes t, CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 按 下 鼠 标 右 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcRButtonDblClk, CWnd::OnNcRButtonUp

CWnd::OnNcRButtonUp

afx_msg void OnNcRButtonUp( UINT nHitTest , CPoint point );

参 数

nHitTest

指 定 了 击 中 测 试 代 码 。 击 中 测 试 用 于 确 定 光 标 的 位 置 。

point

指 定 了 一 个 CPoint 对 象 , 其 中 包 含 了 光 标 位 置 的 x 轴 和 y 轴 屏 幕 坐 标 。这 些 坐 标 总 是 相 对 于 屏 幕 的 左 上 角 的 。

说 明

当 用 户 在 CWnd 的 非 客 户 区 内 双 击 鼠 标 左 键 时 , 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, CWnd::OnNcRButtonDblClk, CWnd::OnNcRButtonDown, WM_NCRBUTTONUP

CWnd::OnNotify

virtual BOOL CWnd::OnNotify( WPARAM wParam , LPARAM lParam , LRESULT* pResult );

返 回 值

如 果 应 用 程 序 处 理 这 个 消 息 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

wParam

如 果 消 息 是 从 控 件 发 出 的 ,则 标 识 了 发 出 消 息 的 控 件 ;否则 wParam 为 0 。

lParam

指 向 通 知 消 息 ( N M H D R ) 结 构 的 指 针 , 其 中 包 含 了 通 知 消 息 代 码 和 附加 信 息 。 对 于 某 些 通 知 消 息 , 这 个 指 针 指 向 一 个 更 大 的 结 构 , N M H D R 是 其 第 一 个 参 数 。

pResult

指向 LRESULT 变 量 的 指 针 , 如 果 消 息 被 处 理 , 则 用 它 来 保 存 返 回 代 码 。

说 明

框 架 调 用 这 个 函 数 以 通 知 控 件 的 父 窗 口 , 在 控 件 中 发 生 了 一 个 事 件 , 或 者 该 控件 需 要 某 些 类 型 的 信 息 。

OnNotify 处 理 控 件 通 知 的 消 息 映 射 。

处 理 消 息 映 射 , 除 非 调 用 了 基 类 的 OnNotify 。

有 关 W M _NOTIFY 消 息 的 更 多 信 息 参 见“ TN061 :ON_NOTIFY 和 W M _NOTIFY 消 息 ” 。 可 能 你 会 对“ TN060 : 新 的 W indows 公 共 控 件 ” 和 “ TN062 : W indows 控 件 的 消 息 反 射 ” 中 描 述 的 相 关 主 题 感 兴 趣 。 所 有 这 些 都 在 V isual C++ 联 机 文档 中 。

CWnd::OnPaint

afx_msg void OnPaint( );

说 明

当 W indows 或 应 用 程 序 请 求 重 画 应 用 程 序 窗 口 的 一 部 分 时 , 框 架 调 用 这 个 成 员函 数 。 WM_PAINT 在 调 用 UpdateWindow 或 RedrawWindow 成 员 函 数 时 发 出 。当 设 置 了 RDW_INTERNALPAINT 标 志 并 调 用 RedrawWindow 成 员 函 数 时 , 窗口 可 能 会 接 收 到 内 部 重 画 消 息 。 在 这 种 情 况 下 , 窗 口 可 能 没 有 更 新 区 域 。 应 用程 序 必 须 调 用 GetUpdateRect 成 员 函 数 以 确 定 窗 口 是 否 具 有 更 新 区 域 。 如 果GetUpdateRect 返 回 0 , 则 应 用 程 序 不 应 调 用 BeginPaint 和 EndPaint 成 员 函 数 。

应 用 程 序 负 责 检 查 是 否 需 要 内 部 重 画 或 更 新 , 这 可 通 过 查 看 每 条 WM_PAINT

消 息 的 内 部 数 据 结 构 来 完 成 , 因 为 一 条 WM_PAINT 可 能 是 由 于 一 个 无 效 区 域

起 的 。

W indows 只 发 送 一 次 内 部 WM_PAINT 消 息 。 在 通 过 UpdateWindow 成 员 函 数向 窗 口 发 送 了 内 部 WM_PAINT 消 息 以 后 , 将 不 会 再 向 窗 口 发 送 其 它WM_PAINT 消 息 , 直 到 再 次 使 用 RDW_INTERNALPAINT 标 志 调 用 了RedrawWindow 成 员 函 数 。

有 关 在 文 档 /视 应 用 程 序 中 描 绘 图 象 的 信 息 参 见 CView::OnDraw 。

有 关 使 用 WM_PAINT 的 更 多 信 息 参 见 《 W in32 SDK 程 序 员 参 考 》 中 的 下 列 主题 :

  • “ WM_PAINT 消 息 ”

  • “ 使 用 WM_PAINT 消 息 ”

请 参 阅

CWnd::BeginPaint,CWnd::EndPaint,CWnd::RedrawWindow,CPaintDC,CView:: OnDraw

CWnd::OnPaintClipboard

afx_msg void OnPaintClipboard( CWnd* pClipAppWnd , HGLOBAL hPaintStruct );

参 数

pClipAppWnd

指 定 了 剪 贴 板 应 用 程 序 的 窗 口 指 针 。 这 个 指 针 可 能 是 临 时 的 , 不 能 被 保存 以 供 将 来 使 用 。

hPaintStruct

标 识 了 一 个 PAINTSTRUCT 数 据 结 构 , 它 确 定 了 要 画 出 客 户 区 的 什 么 部分。

说 明

当 剪 贴 板 的 拥 有 者 以 CF_OWNERDISPLAY 格 式 在 剪 贴 板 中 放 置 了 数 据 并 且 剪贴 板 观 察 器 的 客 户 区 需 要 重 画 时 , 剪 贴 板 观 察 器 就 调 用 剪 贴 板 拥 有 者 的OnPaintClipboard 成 员 函 数 。

要 确 定 是 整 个 客 户 区 还 是 客 户 区 的 一 部 分 需 要 重 画 , 剪 贴 板 拥 有 者 必 须 把PAINTSTRUCT 结 构 的 rcpaint 成 员 所 指 定 的 绘 图 区 域 的 大 小 与 最 近 调 用 的OnSizeClipboard 成 员 函 数 中 指 定 的 大 小 相 比 较 。

OnPaintClipboard 应 该 使 用 W indows 的 G lobalLock 函 数 来 锁 定 包 含 了PAINTSTRUCT 数 据 结 构 的 内 存 , 并 且 在 退 出 之 前 用 W indows 的 G lobalUnlock 函 数 来 释 放 内 存 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消

息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 ::G lobalLock, ::GlobalUnlock, CWnd::OnSizeClipboard, WM_PAINTCLIPBOARD

CWnd::OnPaletteChanged

afx_msg void OnPaletteChanged( CWnd* pFocusWnd );

参 数

pFocusWnd

指 定 了 引 起 系 统 调 色 板 改 变 的 窗 口 的 指 针 。 这 个 指 针 可 能 是 临 时 的 , 不能 被 保 存 。

说 明

当 拥 有 输 入 焦 点 的 窗 口 实 现 了 它 的 逻 辑 调 色 板 , 因 而 改 变 了 系 统 调 色 板 时 , 框架 为 所 有 的 顶 层 窗 口 调 用 这 个 成 员 函 数 。 这 个 调 用 允 许 不 具 有 输 入 焦 点 且 拥 有调 色 板 的 窗 口 实 现 它 的 逻 辑 调 色 板 并 更 新 其 客 户 区 。

OnPalletteChanged 成 员 函 数 是 为 所 有 的 顶 层 窗 口 和 重 叠 窗 口 , 包 括 改 变 了 系 统调 色 板 , 因 而 引 起 WM_PALETTECHANGED 消 息 的 窗 口 而 调 用 的 。 如 果 子 窗口 也 使 用 调 色 板 , 则 这 个 消 息 必 须 发 送 给 它 。

为 了 避 免 无 限 循 环 , 除 非 窗 口 确 定 pFocusWnd 中 不 包 含 指 向 自 己 的 指 针 , 否 则就 不 应 实 现 其 调 色 板 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 ::RealizePalette, WM_PALETTECHANGED, CWnd::OnPaletteIsChanging, CWnd::OnQueryNewPalette

CWnd::OnPaletteIsChanging

afx_msg void OnPaletteIsChanging( CWnd* pRealizeWnd );

参 数

pRealizeWnd

指 定 了 要 实 现 逻 辑 调 色 板 的 窗 口 。

说 明

框 架 调 用 这 个 成 员 函 数 以 通 知 应 用 程 序 , 有 一 个 应 用 程 序 即 将 实 现 它 的 逻 辑 调色 板 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnPaletteChanged, CWnd::OnQueryNewPalette, WM_PALETTEISCHANGING

CWnd::OnParentNotify

afx_msg void OnParentNotify( UINT message , LPARAM lParam );

参 数

message

指 定 了 父 窗 口 要 被 通 知 的 事 件 和 子 窗 口 的 标 识 符 。 事 件 是 消 息 的 低 位 字 。如 果 事 件 为 WM_CREATE 或 WM_DESTROY , 则 消 息 的 高 位 字 是 子 窗口 的 标 识 符 ; 否 则 高 位 字 没 有 定 义 。 事 件 ( 消 息 的 低 位 字 ) 可 以 是 下 列

值 中 的 任 意 一 个 :

  • W M _CREATE 子 窗 口 正 在 创 建 。

  • W M _DESTROY 子 窗 口 正 被 销 毁 。

  • W M _LBUTTONDOWN 用 户 将 鼠 标 光 标 放 在 子 窗 口 上 方 并 按 下

    了 鼠标 的 左 键 。

  • W M _ MBUTTONDOWN 用 户 将 鼠 标 光 标 放 在 子 窗 口 上 方 并 按

    下 了

鼠 标 的 中 键 。

  • W M _RBUTTONDOWN 用 户 将 鼠 标 光 标 放 在 子 窗 口 上 方 并 按 下

    了鼠 标 的 右 键 。

lParam

如 果 消 息 的 事 件( 低 位 字 )是 WM_CREATE 或 WM_DESTROY ,则 lParam 指 定 了 子 窗 口 的 窗 口 句 柄 , 否 则 lParam 包 含 了 光 标 的 x 和 y 坐 标 。 x 坐标 为 低 位 字 , y 坐 标 为 高 位 字 。

说 明

当 子 窗 口 被 创 建 或 销 毁 , 或 者 用 户 在 子 窗 口 上 方 点 击 鼠 标 按 钮 时 , 框 架 调 用 父窗 口 的 OnParentNotify 成 员 函 数 。 在 子 窗 口 被 创 建 的 时 候 , 系 统 在 创 建 窗 口 的Create 成 员 函 数 返 回 之 前 调 用 OnParentNotify 。 当 子 窗 口 被 销 毁 的 时 候 , 系 统在 任 何 销 毁 窗 口 的 处 理 产 生 之 前 调 用 OnParentNotify。

OnParentNotify 是 为 子 窗 口 的 所 有 父 类 窗 口 , 包 括 顶 层 窗 口 调 用 的 。

除 了 那 些 具 有 WS_EX_NOPARENTNOTIFY 风 格 的 子 窗 口 外 , 所 有 的 子 窗 口 都向 它 们 的 父 窗 口 发 送 这 个 消 息 。 在 缺 省 情 况 下 , 对 话 框 中 的 子 窗 口 都 具 有WS_EX_NOPARENTNO - TIFY 风 格 , 除 非 在 用 CreateEx 成 员 函 数 创 建 子 窗 口的 时 候 没 有 使 用 这 个 风 格 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnCreate, CWnd::OnDestroy, CWnd::OnLButtonDown, CWnd::OnMButtonDown, CWnd::OnRButtonDown, WM_PARENTNOTIFY

CWnd::OnQueryDragIcon

afx_msg HCURSOR OnQueryDragIcon( );

返 回 值

一 个 双 字 值 , 它 在 低 位 字 中 包 含 了 光 标 或 图 标 的 句 柄 。 光 标 和 图 标 必 须 与 显 示器 的 分 辨 率 匹 配 。 如 果 应 用 程 序 返 回 NULL , 则 系 统 将 显 示 缺 省 的 光 标 。 缺 省的 返 回 值 是 NULL 。

框 架 为 不 具 有 为 类 图 标 的 最 小 化 ( 图 标 化 ) 窗 口 调 用 这 个 成 员 函 数 。 系 统 调 用这 个 函 数 以 在 用 户 拖 拉 最 小 化 窗 口 的 时 候 显 示 光 标 。

如 果 应 用 程 序 返 回 图 标 或 光 标 的 句 柄 , 系 统 将 它 转 换 为 黑 与 白 。

如 果 应 用 程 序 返 回 一 个 句 柄 , 则 这 个 句 柄 必 须 标 识 与 显 示 设 备 分 辨 率 相 兼 容 的单 色 光 标 或 图 标 。 应 用 程 序 可 以 调 用 C W inApp::LoadCursor 或C W inApp::LoadIcon 成 员 函 数 以 从 它 的 可 执 行 文 件 的 资 源 中 载 入 光 标 或 图 标 并获 得 其 句 柄 。

请 参 阅 C W inApp::LoadCursor, CWinApp::LoadIcon, WM_QUERYDRAGICON

CWnd::OnQueryEndSession

afx_msg BOOL OnQueryEndSession( );

返 回 值

如 果 应 用 程 序 可 以 被 方 便 地 关 闭 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

当 用 户 选 择 关 闭 W indows 或 者 应 用 程 序 调 用 W indows 的 ExitWindows 函 数 时 , 框 架 调 用 这 个 成 员 函 数 。 如 果 应 用 程 序 返 回 0 ,则 W indows 会 话 不 会 结 束 。 只要 有 一 个 应 用 程 序 返 回 了 0 , W indows 就 停 止 调 用 OnQueryEndSession , 并 且向 所 有 已 经 返 回 非 零 值 的 应 用 程 序 发 送 一 个 WM_ENDSESSION 消 息 , 参 数 值为 FALSE 。

请 参 阅 ::Exit W indows, CWnd::OnEndSession, WM_QUERYENDSESSION

CWnd::OnQueryNewPalette

afx_msg BOOL OnQueryNewPalette( );

返 回 值

如 果 CWnd 实 现 了 它 的 逻 辑 调 色 板 , 则 返 回 非 零 值 ; 否 则 为 0 。

说 明

当 CWnd 对 象 即 将 接 收 输 入 焦 点 时 , 框 架 就 调 用 这 个 成 员 函 数 , 使 CWnd 有 机会 在 接 收 到 输 入 焦 点 时 实 现 它 的 逻 辑 调 色 板 。

请 参 阅 CWnd::Default, CWnd::OnPaletteChanged, WM_QUERYNEWPALETTE

CWnd::OnQueryOpen

afx_msg BOOL OnQueryOpen( );

返 回 值

如 果 图 标 可 以 被 打 开 , 则 返 回 非 零 值 ; 如 果 要 防 止 图 标 被 打 开 , 则 返 回 0 。

说 明

当 CWnd 是 最 小 化 的 , 并 且 用 户 请 求 CWnd 恢 复 它 在 被 最 小 化 之 前 的 大 小 和 位置 时 , 框 架 调 用 这 个 成 员 函 数 。

在 OnQueryOpen 中 ,CWnd 不 应 该 执 行 任 何 可 能 引 起 激 活 或 改 变 焦 点 的 动 作( 例如 创 建 对 话 框 ) 。

请 参 阅 WM_QUERYOPEN

CWnd::OnRButtonDblClk

afx_msg void OnRButtonDblClk( UINT nFlags , CPoint point );

参 数

nFlags

point

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 双 击 鼠 标 右 键 时 框 架 调 用 这 个 成 员 函 数 。

只 有 具 有 CS_DBLCLKS WNDCLASS 风 格 的 窗 口 才 接 收 OnRButtonDlbClk 调用 。 这 是 微 软 基 础 类 窗 口 的 缺 省 状 态 。 当 用 户 按 下 、 释 放 , 然 后 在 系 统 规 定 的双 击 时 间 限 制 之 内 再 次 按 下 鼠 标 右 键 时 , W indows 就 调 用 OnRButtonDblClk 。双 击 鼠 标 右 键 实 际 产 生 四 个 事 件 : WM_RBUTTON D O W N , W M _ R BUTTONUP 消 息 , W M _ R BUTTONDBLCLK 调 用 , 以 及 释 放 按 钮 时 的 另 一 个W M _ R BUTTONUP 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnRButtonDown, CWnd::OnRButtonUp, WM_RBUTTONDBLCLK

CWnd::OnRButtonDown

afx_msg void OnRButtonDown( UINT nFlag s, CPoint point );

参 数

nFlags

point

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如果 CTRL 键 被 按 下 , 则 设 置 此 位 。

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 按 下 鼠 标 右 键 时 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnRButtonDblClk, CWnd::OnRButtonUp, W M _ R B U T T O N D O W N

CWnd::OnRButtonUp

afx_msg void OnRButtonUp( UINT nFlags , CPoint point );

参 数

nFlags

指 定 了 不 同 的 虚 拟 键 是 否 被 按 下 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • MK_CONTROL 如果 CTRL 键 被 按 下 , 则 设 置 此 位 。

point

  • MK_LBUTTON 如 果 鼠 标 左 键 被 按 下 , 则 设 置 此 位 。

  • MK_MBUTTON 如 果 鼠 标 中 键 被 按 下 , 则 设 置 此 位 。

  • MK_RBUTTON 如 果 鼠 标 右 键 被 按 下 , 则 设 置 此 位 。

  • MK_SHIFT 如 果 SHIFT 键 被 按 下 , 则 设 置 此 位 。

指 定 了 光 标 的 x 和 y 轴 坐 标 。 这 些 坐 标 通 常 是 相 对 于 窗 口 的 左 上 角 的 。

说 明

当 用 户 放 开 鼠 标 右 键 时 框 架 调 用 这 个 成 员 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnRButtonDblClk, CWnd::OnRButtonDown, WM_RBUTTONUP

CWnd::OnRegisteredMouseWheel

afx_msg LRESULT OnRegisteredMouseWheel( WPARAM wParam , LPARAM

lParam );

返 回 值

此 时 不 重 要 。 总 为 零 。

参 数

wParam

指 针 的 水 平 位 置 。

lParam

指 针 的 垂 直 位 置 。

说 明

当 用 户 滚 动 鼠 标 滚 轮 并 遇 到 滚 轮 的 下 一 个 刻 度 时 , 框 架 就 调 用 这 个 成 员 函 数 。除 非 被 重 载 , 否 则 OnRegisteredMouseWheel 注册 W indows 的 消 息 , 将 消 息 转发 到 适 当 的 窗 口 , 然 后 为 该 窗 口 调 用 WM_MOUSEWHEEL 处 理 函 数 。

重 载 这 个 成 员 函 数 以 提 供 你 自 己 的 消 息 转 发 机 制 或 改 变 鼠 标 滚 轮 的 滚 动 特 性 。

注意 OnRegisteredMouseWheel 处 理 Windows 95 和 Windows NT 3.51 中 的 消 息 。 对 于 Windows NT 4.0 的 消 息 处 理 , 则 使 用 OnMouseWheel 。

请 参 阅 RegisterWindowMessage

CWnd::OnRenderAllFormats

afx_msg void OnRenderAllFormats( );

说 明

当 剪 贴 板 的 拥 有 者 应 用 程 序 即 将 被 销 毁 时 , 框 架 就 调 用 拥 有 者 的

OnRenderAllFormats 成 员 函 数 。

剪 贴 板 的 拥 有 者 应 当 提 交 它 能 够 产 生 的 的 所 有 格 式 的 数 据 , 并 调 用 W indows 的SetClipboardData 函 数 将 每 种 格 式 的 数 据 句 柄 传 递 给 剪 贴 板 。 这 确 保 剪 贴 板 中包 含 了 有 效 的 数 据 , 即 使 提 交 数 据 的 应 用 程 序 已 经 被 销 毁 了 。 应 用 程 序 必 须 在调 用 W indows 的 SetClipboardData 函 数 之 前 调 用 OpenClipboard 成 员 函 数 , 然后 调 用 W indows 函数 CloseClipboard 。

请 参 阅 ::CloseClipboard, CWnd::OpenClipboard, ::SetClipboardData, CWnd::OnRenderFormat, WM_RENDERALLFORMATS

CWnd::OnRenderFormat

afx_msg void OnRenderFormat( UINT nFormat );

参 数

nFormat

指 定 了 剪 贴 板 的 格 式 。

说 明

当 一 种 延 迟 提 交 的 特 定 格 式 需 要 提 交 时 , 框 架 就 调 用 剪 贴 板 拥 有 者 的OnRenderFormat 成 员 函 数 。 接 收 者 应 当 按 照 该 格 式 提 交 数 据 , 并 调 用 W indows 函 数 SetClipboard 将 它 传 递 到 剪 贴 板 。

不 要 在 OnRenderFormat 之 内 调 用 OpenClipboard 成 员 函 数 或 者 W indows 函 数

CloseClipboard 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 ::CloseClipboard, CWnd::OpenClipboard, ::SetClipboardData, WM_RENDERFORMAT

CWnd::OnSetCursor

afx_msg BOOL OnSetCursor( CWnd* pWnd , UINT nHitTes t, UINT message );

返 回 值

如 果 要 停 止 进 一 步 处 理 , 则 返 回 非 零 值 ; 如 果 要 继 续 , 则 返 回 0 。

参 数

pWnd

指 定 了 包 含 光 标 的 窗 口 指 针 。 这 个 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供将 来 使 用 。

nHitTest

指 定 了 击 中 测 试 区 域 代 码 。 击 中 测 试 确 定 了 光 标 的 位 置 。

message

指 定 了 鼠 标 消 息 。

说 明

如 果 鼠 标 输 入 没 有 被 捕 获 并 且 鼠 标 使 光 标 在 CWnd 对 象 内 移 动 , 则 框 架 调 用 这个 成 员 函 数 。

将 停 止 进 一 步 处 理 。 调 用 父 窗 口 使 父 窗 口 能 够 控 制 子 窗 口 中 光 标 的 设 置 。

如 果 光 标 不 在 客 户 区 内 , 缺 省 的 实 现 将 光 标 设 为 箭 头 ; 如 果 是 在 客 户 区 内 , 则将 光 标 设 为 注 册 的 类 光 标 。

如 果 nHitTest 为 HTERROR 并 且 该 消 息 是 一 个 鼠 标 键 按 下 消 息 , 则 将 调 用

M essageBeep 成 员 函 数 。

当 CWnd 进 入 菜 单 模 式 时 , 消 息 参 数 为 0 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnNcHitTest, WM_SETCURSOR

CWnd::OnSetFocus

afx_msg void OnSetFocus( C W nd* pOldWnd );

参 数

pOldWnd

临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

框 架 在 获 得 输 入 焦 点 以 后 调 用 这 个 成 员 函 数 。 如 果 要 显 示 插 字 符 , CWnd 必 须在 此 时 调 用 适 当 的 插 字 符 函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_SETFOCUS

CWnd::OnShowWindow

afx_msg void OnShowWindow( BOOL bShow , UINT nStatus );

参 数

bShow

指 定 窗 口 是 否 要 被 显 示 。 如 果 窗 口 要 被 显 示 , 则 为 TRUE ; 如 果 窗 口 要

nStatus

指 定 了 要 显 示 的 窗 口 的 状 态 。 如 果 是 因 为 调 用 ShowWindow 成 员 函 数 而发 出 的 消 息 , 则 为 0 ; 否 则 nStatus 为 下 列 值 之 一 :

  • SW_PARENTCLOSING 父 窗 口 正 被 关 闭 ( 变 为 图 标 ) 或 弹 出 式

    窗口 正 被 隐 藏 。

  • SW_PARENTOPENING 父 窗 口 正 被 打 开 ( 被 显 示 ) 或 弹 出 式 窗

    口正 被 显 示 。

说 明

当 CWnd 对 象 要 被 显 示 或 隐 藏 时 ,框 架 调 用 这 个 成 员 函 数 。当 调 用 ShowWindow

成 员 函 数 时 , 或 者 重 叠 窗 口 被 最 大 化 或 复 原 , 或 者 重 叠 式 或 弹 出 式 窗 口 被 关 闭

( 变 为 图 标 ) 或 打 开 ( 被 显 示 ) 时 , 窗 口 被 显 示 或 隐 藏 。 当 重 叠 窗 口 被 关 闭 时 , 所 有 的 与 此 窗 口 相 关 的 所 有 弹 出 窗 口 都 被 隐 藏 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_SHOWWINDOW

CWnd::OnSize

afx_msg void OnSize( UINT nType , int cx , int cy );

参 数

nType

cx cy

指 定 了 要 求 的 调 整 大 小 的 类 型 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • SIZE_MAXIMIZED 窗 口 已 经 被 最 大 化 。

  • SIZE_MINIMIZED 窗 口 已 经 被 最 小 化 。

  • SIZE_RESTORED 窗 口 被 改 变 了 大 小 , 但 SIZE_MINIMIZED 和

SIZE_ MAXIMIZED 都 不 适 用 。

  • SIZE_MAXHIDE 当 其 它 窗 口 被 最 大 化 时 , 消 息 被 发 送 到 所

    有 的 弹出 窗 口 。

  • SIZE_MAXSHOW 当 其 它 窗 口 被 恢 复 到 原 来 的 大 小 时 , 消 息

    被 发 送到 所 有 的 弹 出 窗 口 。

指 定 了 客 户 区 域 的 新 宽 度 。指 定 了 客 户 区 域 的 新 高 度 。

说 明

框 架 在 窗 口 的 大 小 被 改 变 以 后 调 用 这 个 成 员 函 数 。

如 果 在 OnSize 中 为 子 窗 口 调 用 了 SetScrollPos 或 M oveWindow 成 员 函 数 , 则SetScrollPos 或 MoveWindow 的 bRedraw 参 数 必 须 为 非 零 值 , 以 使 CWnd 能 被重 画 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::MoveWindow, CWnd::SetScrollPos, WM_SIZE

CWnd::OnSizeClipboard

afx_msg void OnSizeClipboard( CWnd* pClipAppWnd , HGLOBAL hRect );

参 数

pClipAppWnd

标 识 一 个 剪 贴 板 应 用 程 序 的 窗 口 。 这 个 指 针 可 能 是 临 时 的 , 不 能 被 保 存 。

hRect

标 识 一 个 全 局 内 存 对 象 。 这 个 内 存 对 象 中 包 含 了 一 个 RECT 数 据 结 构 , 指 定 了 剪 贴 板 拥 有 者 要 画 出 的 区 域 。

说 明

当 剪 贴 板 中 包 含 了 具 有 CF_OWNERDISPLAY 属 性 的 数 据 并 且 剪 贴 板 观 察 器 窗口 的 客 户 区 发 生 了 改 变 时 , 剪 贴 板 观 察 器 就 调 用 剪 贴 板 拥 有 者 的OnSizeClipboard 成 员 函 数 。

当 剪 贴 板 应 用 程 序 要 被 销 毁 或 最 小 化 时 , OnSizeClipboard 成 员 函 数 将 会 被 调用 , 并 且 以 一 个 空 矩 形 ( 0 , 0 , 0 , 0 ) 作 为 新 的 大 小 。 这 使 得 剪 贴 板 拥 有 者 可释 放 它 的 显 示 资 源 。

在 OnSizeClipboard 中 , 应 用 程 序 必 须 用 W indows 函数 G lobalLock 来 锁 定 包 含了 RECT 数 据 结 构 的 内 存 。并 且 在 返 回 控 制 权 之 前 用 W indows 函 数 GlobalUnlock 释 放 内 存 。

请 参 阅

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

::GlobalLock, ::GlobalUnlock, ::SetClipboardData,CWnd::SetClipboardViewer,WM

_ SIZECLIPBOARD

CWnd::OnSizing

afx_msg void OnSizing( UINT nSide , LPRECT lpRect );

参 数

nSide lpRect

要 移 动 的 窗 口 的 边 界 。

CRect 或 RECT 结 构 的 地 址 , 将 包 含 项 的 坐 标 。

说 明

框 架 调 用 这 个 成 员 函 数 以 指 明 用 户 正 在 改 变 矩 形 的 大 小 。 通 过 处 理 这 个 消 息 , 应 用 程 序 可 以 监 控 拖 动 矩 形 的 大 小 和 位 置 , 并 且 如 果 需 要 , 可 以 改 变 它 的 大 小和 位 置 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。

参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

CWnd::OnSpoolerStatus

afx_msg void OnSpoolerStatus( UINT nStatus , U INT nJobs );

参 数

nStatus

指 定 了 SP_JOBSTATUS 标 志 。

nJobs

指 定 了 打 印 管 理 器 队 列 中 的 作 业 的 数 目 。

说 明

每 当 在 打 印 管 理 器 中 加 入 或 删 除 一 个 打 印 作 业 时 , 框 架 就 调 用 这 个 成 员 函 数 。这 个 调 用 仅 用 于 通 知 目 的 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的

请 参 阅 WM_SPOOLERSTATUS

CWnd::OnStyleChanged

afx_msg void OnStyleChanged( int nStyleType , LPSTYLESTRUCT lpStyleStruct );

参 数

nStyleType

指 定 改 变 的 是 窗 口 的 扩 展 风 格 还 是 非 扩 展 风 格 。 这 个 参 数 可 以 是 下 列 值之 一 :

  • GWL_EXSTYLE 窗 口 的 扩 展 风 格 发 生 改 变 。

  • GWL_STYLE 窗 口 的 非 扩 展 风 格 发 生 改 变 。

lpStyleStruct

指向 STYLESTRUCT 结 构 , 其 中 包 含 了 窗 口 的 新 风 格 。 应 用 程 序 可 以 检查 这 个 风 格 , 但 是 不 能 改 变 它 们 。

说 明

框 架 在 ::Set W indowLong 函 数 改 变 了 窗 口 的 一 个 或 多 个 风 格 之 后 调 用 这 个 成 员

函 数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_STYLECHANGED

CWnd::OnStyleChanging

afx_msg void OnStyleChanging( int nStyleType , LPSTYLESTRUCT lpStyleStruct );

参 数

nStyleType

指 定 改 变 的 是 窗 口 的 扩 展 风 格 还 是 非 扩 展 风 格 。 这 个 参 数 可 以 是 下 列 值之 一 :

  • GWL_EXSTYLE 窗 口 的 扩 展 风 格 发 生 改 变 。

  • GWL_STYLE 窗 口 的 非 扩 展 风 格 发 生 改 变 。

lpStyleStruct

指 向 一 个 STYLESTRUCT 结 构 , 其 中 包 含 了 窗 口 的 新 风 格 。 应 用 程 序 可

以 检 查 这 些 风 格 并 改 变 它 们 。

说 明

框 架 在 ::Set W indowLong 将 要 改 变 窗 口 的 一 个 或 多 个 风 格 时 调 用 这 个 成 员 函数 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

CWnd::OnSysChar

afx_msg void OnSysChar( UINT nChar , U INT nRepCn t, UINT nFlags );

参 数

nChar

指 定 了 控 制 菜 单 键 的 ASCII 字 符 码 。

nRepCnt

指 定 了 重 复 计 数 ( 当 用 户 按 住 键 时 产 生 的 重 复 击 键 次 数 ) 。

nFlags

nFlags 参 数 可 以 具 有 这 些 值 :

值 含义

0  15 指 定 了 重 复 计 数 。 该 值 为 用 户 按 住 键 时 产 生 的 重 复 击 键 次 数

  1.  23 指 定 了 扫 描 码 。 其 值 依 赖 于 原 始 设 备 制 造 商 ( OEM

  1. 指 定 了 该 键 是 否 是 扩 展 键 , 如 增 强 101 或 102 键 的 键 盘

    上 右手 的 ALT 和 CTRL 键 。 如 果 它 是 扩 展 键 , 则 其 值 为 1 ; 否 则为 0

  2.  28 W indows 内 部 使 用

  1. 指 定 了 上 下 文 代 码 。 如 果 当 按 下 键 时 ALT 键 是 按 下 的

    , 则 其值 为 1 ; 否 则 , 其 值 为 0

  2. 指 定 了 原 来 的 键 状 态 。 如 果 在 消 息 发 出 之 前 键 是 按 下

    的 , 则其 值 为 1 ; 如 果 是 弹 起 的 , 则 为 0

  3. 指 定 了 键 的 暂 态 。 如 果 键 正 被 释 放 , 则 其 值 为 1 , 如

    果 键 正被 按 下 , 则 为 0

说 明

如 果 CWnd 拥 有 输 入 焦 点 , 并 且 转 换 出 WM_SYSKEYUP 和WM_SYSKEYDOWN 消 息 , 则 框 架 调 用 这 个 成 员 函 数 。 它 指 定 了 控 制 菜 单 键的 虚 拟 键 码 。

如 果 上 下 文 代 码 为 0 , 则 可 以 将 WM_SYSCHAR 消 息 传 递 给 W indows 的

TranslateAccelerator 函 数 , 它 将 处 理 这 个 消 息 , 就 好 像 这 个 消 息 是 一 个 普 通 按键 消 息 而 不 是 系 统 字 符 键 。 这 就 使 得 加 速 键 可 以 在 活 动 窗 口 中 使 用 , 即 使 活 动窗 口 不 具 有 输 入 焦 点 。

对 于 IBM 增 强 101 和 102 键 键 盘 , 增 强 键 包 括 键 盘 主 体 部 分 的 右 ALT 键 和 右CTRL 键 ;数 字 键 盘 左 侧 的 INS ,DEL ,H O M E ,END ,PAGE UP ,PAGE DOWN 和 箭 头 键 ; 以 及 数 字 键 盘 上 的 斜 杠 ( /) 和 ENTER 键 。 一 些 其 它 的 键 盘 可 能 支持 nFlags 中 的 扩 展 键 位 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 ::TranslateAccelerator, WM_SYSKEYDOWN, WM_SYSKEYUP, WM_SYSCHAR

CWnd::OnSysColorChange

afx_msg void OnSysColorChange( );

说 明

当 系 统 颜 色 设 置 发 生 变 化 时 , 框 架 为 所 有 的 顶 层 窗 口 调 用 这 个 成 员 函 数 。

W indows 为 系 统 颜 色 变 化 所 影 响 的 任 何 窗 口 调 用 OnSysColorChange 。

具 有 使 用 现 有 的 系 统 颜 色 的 刷 子 的 应 用 程 序 必 须 删 除 这 些 刷 子 , 并 用 新 的 系 统颜 色 重 新 创 建 这 些 刷 子 。

请 参 阅 ::SetSysColors, WM_SYSCOLORCHANGE

CWnd::OnSysCommand

afx_msg void OnSysCommand( UINT nID , LPARAM lParam );

参 数

nID

指 定 了 请 求 的 系 统 命 令 的 类 型 。 这 个 参 数 可 以 是 下 列 值 之 一 :

  • SC_CLOSE 关闭 CWnd 对 象 。

  • SC_HOTKEY 激 活 与 应 用 程 序 指 定 的 热 键 相 关 的 CWnd 对 象

    。lParam

的 低 位 字 标 识 了 要 激 活 的 窗 口 的 H W N D 句 柄 。

  • SC_HSCROLL 水 平 滚 动 。

  • SC_KEYMENU 通 过 击 键 获 得 菜 单 。

  • SC_MAXIMIZE ( 或 SC_ZOOM) 最 大 化 CWnd 对 象 。

  • SC_MINIMIZE ( 或 SC_ICON) 最 小 化 CWnd 对 象 。

  • SC_MOUSEMENU 通 过 鼠 标 点 击 获 得 菜 单 。

    • SC_MOVE 移 动 CWnd 对 象 。

    • SC_NEXTWINDOW 移 动 到 下 一 个 窗 口 。

    • SC_PREVWINDOW 移 动 到 前 一 个 窗 口 。

    • SC_RESTORE 将 窗 口 恢 复 为 普 通 的 位 置 和 大 小 。

    • SC_SCREENSAVE 执行 SYSTEM.INI 文 件 中 [boot] 部 分 指 定 的

      屏 幕保 护 应 用 程 序 。

    • SC_SIZE 调 整 CWnd 对 象 的 大 小 。

    • SC_TASKLIST 执 行 或 激 活 W indows 的 任 务 管 理 器 应 用 程

      序 。

    • SC_VSCROLL 垂 直 滚 动 。

lParam

如 果 控 制 菜 单 是 通 过 鼠 标 选 择 的 , 则 lParam 中 包 含 了 光 标 的 位 置 。 低 位字 包 含 了 x 轴 坐 标 , 高 位 字 包 含 了 y 轴 坐 标 ; 否 则 这 个 参 数 没 有 使 用 。

  • SC_HOTKEY 激 活 与 应 用 程 序 指 定 的 热 键 相 关 的 窗 口 。

    lParam 的 低位 字 标 识 了 要 激 活 的 窗 口 。

  • SC_SCREENSAVE 在 控 制 面 板 的 桌 面 部 分 执 行 屏 幕 保 护 应 用

    程 序 。

说 明

当 用 户 从 控 制 菜 单 选 择 了 一 个 命 令 , 或 者 用 户 选 择 了 最 大 化 户 最 小 化 按 钮 时 , 框 架 调 用 这 个 函 数 。

在 缺 省 情 况 下 , OnSysCommand 执 行 控 制 菜 单 对 前 面 表 格 中 描 述 的 预 定 义 动 作

的 请 求 。

在 W M _SYSCOMMAND 消 息 中 , nID 参 数 的 低 四 位 被 W indows 内 部 使 用 。 当应 用 程 序 测 试 nID 的 值 时 , 它 必 须 用 位 与 操 作 符 AND 将 值 0xFFF0 与 nID 的值 组 合 在 一 起 以 获 得 正 确 的 结 果 。

控 制 菜 单 中 的 菜 单 项 可 以 用 GetSystemMenu , AppendMenu , Insert M enu 和ModifyMenu 成 员 函 数 来 修 改 。 修 改 了 控 制 菜 单 的 应 用 程 序 必 须 处 理WM_SYSCOMMAND 消 息 , 并 且 应 用 程 序 没 有 处 理 的 任 何WM_SYSCOMMAND 消 息 都 必 须 被 发 送 给 OnSysCommand 。 应 用 程 序 加 入 的任 何 命 令 值 必 须 由 应 用 程 序 处 理 , 并 且 不 能 被 传 递 给 OnSysCommand 。

应 用 程 序 可 以 在 任 何 时 候 通 过 向 OnSysCommand 发 送 WM_SYSCOMMAND 消息 来 执 行 任 何 系 统 命 令 。

为 选 择 控 制 菜 单 中 的 项 的 加 速 键 ( 快 捷 方 式 ) 被 转 换 为 OnSysCommand 调 用 ; 所 有 其 它 的 加 速 键 被 转 换 为 W M _ C O M M A N D 消 息 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 WM_SYSCOMMAND

CWnd::OnSysDeadChar

afx_msg void OnSysDeadChar( UINT nChar , UINT nRepCn t, UINT nFlags );

参 数

nChar

指 定 了 死 键 的 字 符 值 。

nRepCnt

指 定 了 重 复 计 数 。

nFlags

指 定 了 扫 描 码 、 键 暂 态 、 一 起 的 键 状 态 和 上 下 文 代 码 , 如 下 面 的 列 表 所示:

值 含义

0  7 扫 描 码 ( 依 赖 于 OEM ) 。 高 位 字 的 低 位 字 节

8 扩 展 键 , 如 功 能 键 或 数 字 键 盘 上 的 键 ( 如 果 该 键 为 扩 展 键 , 则返 回 1 ; 否 则 返 回 0 )

9  10 没 有 使 用

11  12 W indows 内 部 使 用

  1. 上 下 文 代 码 ( 如 果 键 被 按 下 时 ALT 键 是 被 按 住 的 , 则

    为 1 ; 否 则 为 0 )

续表

  1. 以 前 的 键 状 态 ( 如 果 键 在 调 用 前 被 按 下 , 则 为 1 ; 否

    则 为 0 )

  2. 暂 态 ( 如 果 键 是 要 被 放 开 , 则 为 1 ; 如 果 键 是 要 被 按

    下 , 则 为

0 )

说 明

如 果 当 OnSysKeyUp 或 OnSysKeyDown 成 员 函 数 被 调 用 时 CWnd 对 象 拥 有 输入 焦 点 , 则 框 架 调 用 这 个 成 员 函 数 。 它 指 定 了 死 键 的 字 符 值 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 CWnd::OnSysKeyDown, CWnd::OnSysKeyUp, WM_SYSDEADCHAR, CWnd::OnDeadChar

CWnd::OnSysKeyDown

afx_msg void OnSysKeyDown( UINT nChar , UINT nRepCn t, UINT nFlags );

参 数

nChar

指 定 了 被 按 下 的 键 的 虚 拟 键 码 。

nRepCnt

指 定 了 重 复 计 数 。

nFlags

指 定 了 扫 描 码 、 键 暂 态 、 以 前 的 键 状 态 和 上 下 文 代 码 , 如 下 面 的 列 表 所示:

值 含义

0 – 7 扫 描 码 ( 依 赖 于 OEM ) 。 高 位 字 的 低 位 字 节

  1. 扩 展 键 , 如 功 能 键 或 数 字 键 盘 上 的 键 ( 如 果 该 键 为 扩

    展 键 , 则返回 1 ; 否 则 返 回 0 )

  2. – 10 没 有 使 用

11 – 12 W indows 内 部 使 用

  1. 上 下 文 代 码 ( 如 果 键 被 按 下 时 ALT 键 是 被 按 住 的 , 则

    为 1 ; 否则为 0 )

  2. 以 前 的 键 状 态 ( 如 果 键 在 调 用 前 被 按 下 , 则 为 1 ; 否

    则 为 0 )

  3. 暂态 ( 如 果 键 是 要 被 放 开 , 则 为 1 ; 如 果 键 是 要 被 按

    下 , 则 为 0 )

对 于 OnSysKeyDown 调 用 , 键 暂 态 位 ( 15 位 ) 为 0 。 如 果 按 下 键 时 ALT 键 被按 下 , 则 上 下 文 代 码 位 ( 13 位 ) 为 1 ; 如 果 因 为 没 有 窗 口 拥 有 输 入 焦 点 消 息 被

发 送 到 活 动 窗 口 时 , 它 为 0 。

说 明

如 果 CWnd 对 象 具 有 输 入 焦 点 , 则 当 用 户 按 住 ALT 键 然 后 按 下 其 它 键 时 , 框架 就 调 用 OnSysKeyDown 成 员 函 数 。 如 果 没 有 窗 口 具 有 当 前 的 输 入 焦 点 , 活 动窗 口 的 OnSysKeyDown 成 员 函 数 将 会 被 调 用 。 接 收 调 用 的 CWnd 对 象 可 以 通 过检 查 nFlags 中 的 上 下 文 代 码 位 来 区 别 这 两 种 环 境 。

当 上 下 文 代 码 为 0 时 , OnSysKeyDown 接 收 到 的 WM_SYSKEYDOWN 消 息 可以 被 传 递 给 W indows 的 函 数 TranslateAccelerator, 它 将 处 理 这 个 消 息 , 就 像 这是 一 种 普 通 的 键 盘 消 息 而 不 是 系 统 键 消 息 。

由 于 自 动 重 复 , 在 接 收 到 W M _SYSKEYUP 消 息 之 前 , 可 能 会 产 生 多 个OnSysKeyDown 调 用 。 以 前 的 键 状 态 ( 14 位 ) 可 以 用 来 确 定 OnSysKeyDown 调 用 是 代 表 第 一 个 按 下 暂 态 还 是 重 复 的 按 下 暂 态 。

对 于 IBM 增 强 101 和 102 键 键 盘 , 增 强 键 包 括 键 盘 主 体 部 分 的 右 ALT 键 和 右CTRL 键 ;数 字 键 盘 左 侧 的 INS ,DEL ,H O M E ,END ,PAGE UP ,PAGE DOWN 和 箭 头 键 ; 以 及 数 字 键 盘 上 的 斜 杠 ( /) 和 ENTER 键 。 一 些 其 它 的 键 盘 可 能 支持 nFlags 中 的 扩 展 键 位 。

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。

如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 ::TranslateAccelerator, WM_SYSKEYUP, WM_SYSKEYDOWN

CWnd::OnSysKeyUp

afx_msg void OnSysKeyUp( UINT nChar , UINT nRepCn t, UINT nFlags );

参 数

nChar

指 定 了 被 释 放 的 键 的 虚 拟 键 码 。

nRepCnt

指 定 了 重 复 计 数 。

nFlags

指 定 了 扫 描 码 、 键 暂 态 码 、 以 前 的 键 状 态 和 上 下 文 代 码 , 如 下 面 的 列 表所 示 :

值 含义

0 – 7 扫 描 码 ( 依 赖 于 OEM ) 。 高 位 字 的 低 位 字 节

  1. 扩 展 键 , 如 功 能 键 或 数 字 键 盘 上 的 键 ( 如 果 该 键 为 扩

    展 键 , 则返回 1 ; 否 则 返 回 0 )

  2. – 10 没 有 使 用

11 – 12 W indows 内 部 使 用

  1. 上 下 文 代 码 ( 如 果 键 被 按 下 时 ALT 键 是 被 按 住 的 , 则

    为 1 ; 否则为 0 )

  2. 以 前 的 键 状 态 ( 如 果 键 在 调 用 前 被 按 下 , 则 为 1 ; 否

    则 为 0 )

  3. 暂态 ( 如 果 键 正 被 放 开 , 则 为 1 ; 如 果 键 正 被 按 下 ,

    则 为 0 )

对 于 OnSysKeyUp 调 用 , 键 暂 态 位 ( 15 位)为 0 。 如 果 按 下 键 时 ALT 键 被 按 下 , 则 上 下 文 代 码 位 ( 13 位 ) 为 1 ; 如 果 因 为 没 有 窗 口 拥 有 输 入 焦 点 消 息 被 发 送 到活 动 窗 口 时 , 它 为 0 。

说 明

如 果 CWnd 对 象 具 有 输 入 焦 点 , 则 当 用 户 放 开 一 个 在 按 住 ALT 键 时 按 下 的 键时 , 框 架 就 调 用 OnSysKeyUp 成 员 函 数 。 如 果 没 有 窗 口 具 有 当 前 的 输 入 焦 点 , 活 动 窗 口 的 OnSysKeyUp 成 员 函 数 将 会 被 调 用 。 接 收 调 用 的 CWnd 对 象 可 以 通过 检 查 nFlags 中 的 上 下 文 代 码 位 来 区 别 这 两 种 环 境 。

当 上 下 文 代 码 为 0 时 , OnSysKeyUp 接 收 到 的 WM_SYSKEYUP 消 息 可 以 被 传

递 给 W indows 的 函 数 TranslateAccelerator, 它 将 处 理 这 个 消 息 , 就 像 这 是 一 种普 通 的 键 盘 消 息 , 而 不 是 系 统 键 消 息 。

对 于 IBM 增 强 101 和 102 键 键 盘 , 增 强 键 包 括 键 盘 主 体 部 分 的 右 ALT 键 和 右CTRL 键 ;数 字 键 盘 左 侧 的 INS ,DEL ,H O M E ,END ,PAGE UP ,PAGE DOWN 和 箭 头 键 ; 以 及 数 字 键 盘 上 的 斜 杠 ( /) 和 ENTER 键 。 一 些 其 它 的 键 盘 可 能 支持 nFlags 中 的 扩 展 键 位 。

对 于 非 美 国 增 强 型 102 键 键 盘 , 右 边 的 ALT 键 被 当 作 CTRL+ ALT 键 组 合 处 理 。下 面 显 示 用 户 按 下 并 释 放 这 个 键 时 生 成 的 消 息 和 调 用 的 顺 序 :

顺序

访 问 的 函 数

传 递 的 消 息

1.

W M _ K E Y D O W N

VK_CONTROL

2.

W M _ K E Y D O W N

VK_MENU

3.

W M _ K E Y U P

VK_CONTROL

4.

WM_SYSKEYUP

VK_MENU

注意 框 架 调 用 这 个 成 员 函 数 以 允 许 你 的 应 用 程 序 处 理 一 个 Windows 消息 。 传 递 给 你 的 成 员 函 数 的 参 数 反 映 了 接 收 到 消 息 时 框 架 接 收 到 的 参 数 。如 果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 则 该 实 现 将 使 用 最 初 传 递 给 消 息 的参数 ( 而 不 是 你 提 供 给 这 个 函 数 的 参 数 ) 。

请 参 阅 ::TranslateAccelerator, WM_SYSKEYDOWN, WM_SYSKEYUP

CWnd::OnTCard

afx_msg void OnTCard( UINT idAction , DWORD dwActionData );

参 数

idAction

表 明 用 户 所 进 行 的 动 作 。 此 参 数 可 以 是 下 列 值 之 一 :

  • IDABORT 用 户 点 击 了 可 选 的 Abort 按 钮 。

  • IDCANCEL 用 户 点 击 了 可 选 的 Cancel 按 钮 。

  • IDCLOSE 用 户 关 闭 了 训 练 卡 片 。

  • IDHELP 用 户 点 击 了 可 选 的 W indows Help 按 钮 。

  • IDIGNORE 用 户 点 击 了 可 选 的 Ignore 按 钮 。

  • IDOK 用 户 点 击 了 可 选 的 OK 按 钮 。

  • IDNO 用 户 点 击 了 可 选 的 No 按 钮 。

  • IDRETRY 用 户 点 击 了 可 选 的 Retry 按 钮 。

  • HELP_TCARD_DATA 用 户 点 击 了 一 个 可 选 的 按 钮 。

    dwActionData

参 数 包 含 了 一 个 由 帮 助 编 写 者 指 定 的 长 整 数 。

  • HELP_TCARD_NEXT 用 户 点 击 了 可 选 的 Next 按 钮 。

  • HELP_TCARD_OTHER_CALLER 另 一 个 应 用 程 序 请 求 训 练 卡 片 。

  • IDYES 用 户 点 击 了 可 选 的 Yes 按 钮 。

dwActionData

如果 idAction 指 定 的 是 HELP_TCARD_DATA , 则 此 参 数 是 由 帮 助 编 写者 指 定 的 长 整 数 ; 否 则 这 个 参 数 是 零 。

说 明

当 用 户 点 击 一 个 可 选 的 按 钮 时 , 框 架 调 用 这 个 成 员 函 数 。 只 有 当 用 户 单 击 了W indows Help 的 某 个 训 练 卡 片 时 , 这 个 函 数 才 会 被 调 用 。 应 用 程 序 通 过 在 一 个对 W inHelp 函 数 的 调 用 中 指 定 HELP_TCARD 命 令 来 初 始 化 一 个 训 练 卡 片 。

请 参 阅 ::W inHelp, CWinApp::WinHelp

CWnd::OnTimeChange

afx_msg void OnTimeChange( );

说 明

在 系 统 时 间 被 改 变 之 后 , 框 架 调 用 此 成 员 函 数 。

任 何 应 用 程 序 在 改 变 系 统 时 间 之 后 都 向 所 有 的 顶 层 窗 口 发 送 这 个 消 息 。 要 向 所有 的 顶 层 窗 口 发 送 WM_TIMECHANGE 消 息 , 应 用 程 序 可 以 使 用 W indows 函数 SendMessage , 将 它 的 hwnd 参 数 设 置 为 HWND_BROADCAST 。

请 参 阅 ::SendMessage, WM_TIMECHANGE

CWnd::OnTimer

afx_msg void OnTimer( UINT nIDEvent );

参 数

nIDEvent

指 定 定 时 器 的 标 识 符 。

当 在 SetTimer 成 员 函 数 中 指 定 的 每 一 个 时 间 间 隔 都 被 用 来 安 装 一 个 定 时 器 之后 , 框 架 调 用 这 个 成 员 函 数 。

当 在 应 用 程 序 的 消 息 队 列 中 没 有 其 它 的 消 息 时 , W indows 函数 D ispatchMessage

发 送 一 个 WM_TIMER 消 息 。

注 意 框 架 调 用 这 个 成 员 函 数 来 使 你 的 应 用 程 序 可 以 处 理 一 个 Windows 消 息 。 传 递 给 你 的 函 数 的 参 数 反 映 了 在 消 息 收 到 时 框 架 收 到 的 参 数 。 如果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 这 个 实 现 将 使 用 最 初 随 着 消 息 传 递 过来 的 参 数 , 而 不 是 使 用 你 提 供 给 函 数 的 参 数 。

请 参 阅 CWnd::SetTimer, WM_TIMER

CWnd::OnToolHitTest

virtual int CWnd::OnToolHitTest( CPoint poin t, TOOLINFO* pTI ) const;

返 回 值

如 果 发 现 了 工 具 提 示 控 制 , 则 返 回 1 ; 如 果 没 有 发 现 工 具 提 示 控 制 , 则 返 回 -1 。

point pTI

指 定 光 标 的 x- 和 y- 坐 标 。 这 些 坐 标 总 是 相 对 于 窗 口 的 左 上 角 的 。

是 一 个 指 向 TOOLINFO 结 构 的 指 针 。 下 面 的 结 构 值 是 缺 省 设 置 的 :

  • hwnd = m_hWnd 一 个 窗 口 的 句 柄 。

  • uId = (UINT)hWndChild 一 个 子 窗 口 的 句 柄 。

  • uFlags |= TTF_IDISHWND 工 具 的 句 柄 。

  • lpszText = LPSTR_TEXTCALLBACK 指 向 要 被 显 示 在 指 定 窗 口 中

    的字 符 串 的 指 针 。

说 明

框 架 调 用 这 个 成 员 函 数 来 确 定 一 个 点 是 否 在 指 定 工 具 的 边 界 矩 形 之 内 。 如 果 该点 是 在 此 矩 形 之 内 , 则 此 函 数 返 回 有 关 这 个 工 具 的 信 息 。

如 果 与 工 具 提 示 关 联 的 该 区 域 不 是 一 个 按 钮 , 则 OnToolHitTest 将 结 构 标 志 设置 为 TTF_NOTBUTTON 和 TTF_CENTERTIP 。

重 载 OnToolHitTest 可 以 提 供 与 缺 省 不 同 的 信 息 。

参 见 《 W in32 SDK 程 序 员 参 考 》 中 的 “ TOOLINFO ” 可 以 获 得 有 关 此 结 构 的 更多 信 息 。

请 参 阅 TOOLINFO, CWnd::FilterTooltipMessage

CWnd::OnVKeyToItem

protafx_msg int OnVKeyToItem( UINT nKey , CListBox* pListBox , UINT nIndex );

返 回 值

返 回 值 指 定 了 在 对 消 息 作 出 响 应 时 应 用 程 序 所 执 行 的 动 作 。 返 回 值 为 – 2 表 示 应用 程 序 处 理 了 所 选 项 的 各 个 方 面 , 并 且 不 需 要 列 表 框 执 行 更 进 一 步 的 动 作 。 返回 值 为 – 1 表 示 必 须 执 行 缺 省 的 动 作 来 响 应 按 键 。 返 回 值 为 0 或 更 大 表 示 列 表 框中 的 一 个 项 从 零 基 索 引 , 并 且 表 明 了 该 列 表 框 必 须 对 给 定 项 执 行 缺 省 的 动 作 来响 应 按 键 。

参 数

nKey

指 定 用 户 按 下 的 键 的 虚 键 代 码 。

pListBox

指 定 一 个 指 向 此 列 表 框 的 指 针 。 该 指 针 可 能 是 临 时 的 , 且 不 得 为 将 来 使用 而 保 存 该 指 针 。

nIndex

指 出 插 字 符 的 当 前 位 置 。

说 明

如 果 CWnd 对 象 拥 有 一 个 具 有 LBS_WANTKEYBOARDINPUT 风 格 的 列 表 框 , 则 该 列 表 框 将 发 送 WM_VKEYTOITEM 消 息 来 响 应 一 个 W M _ K E Y D O W N 消息 。

只 有 对 具 有 LBS_HASSTRINGS 风 格 的 列 表 框 框 架 才 调 用 这 个 成 员 函 数 。

注 意 框 架 调 用 这 个 成 员 函 数 来 使 你 的 应 用 程 序 可 以 处 理 一 个 Windows 消 息 。 传 递 给 你 的 函 数 的 参 数 反 映 了 在 消 息 收 到 时 框 架 收 到 的 参 数 。 如果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 这 个 实 现 将 使 用 最 初 随 着 消 息 传 递 过来 的 参 数 , 而 不 是 使 用 你 提 供 给 函 数 的 参 数 。

请 参 阅 WM_KEYDOWN, WM_VKEYTOITEM

CWnd::OnVScroll

afx_msg void OnVScroll( UINT nSBCode , UINT nPos , CScrollBar* pScrollBar );

参 数

nSBCode

nPos

指 定 一 个 指 示 用 户 的 滚 动 请 求 的 滚 动 条 代 码 。 这 个 参 数 可 以 是 下 列 值 之一:

  • SB_BOTTOM 滚 动 到 底 部 。

  • SB_ENDSCROLL 结 束 滚 动 。

  • SB_LINEDOWN 向 下 滚 动 一 行 。

  • SB_LINEUP 向 上 滚 动 一 行 。

  • SB_PAGEDOWN 向 下 滚 动 一 页 。

  • SB_PAGEUP 向 上 滚 动 一 页 。

  • SB_THUMBPOSITION 滚 动 到 一 个 绝 对 位 置 。 当 前 位 置 在

    nPos 中 指定。

  • SB_THUMBTRACK 拖 动 滚 动 框 到 指 定 位 置 。 当 前 位 置 在

    nPos 中 指定。

  • SB_TOP 滚 动 到 顶 部 。

如 果 滚 动 条 代 码 是 SB_THUMBPOSITION 或 SB_THUMBTRACK , 则 此参 数 指 定 滚 动 框 的 位 置 ; 否 则 不 使 用 此 参 数 。 根 据 初 始 的 滚 动 范 围 , nPos 可 能 会 是 负 值 , 如 果 需 要 的 话 可 将 其 强 制 转 换 为 int 值 。

pScrollBar

如 果 滚 动 信 息 来 自 于 一 个 滚 动 条 控 制 , 则 此 参 数 是 指 向 该 控 制 的 指 针 。如 果 用 户 单 击 了 一 个 窗 口 的 滚 动 条 , 则 此 参 数 是 NULL 。 该 指 针 可 能 是

临 时 的 , 不 能 被 保 存 为 给 将 来 使 用 。

说 明

当 用 户 单 击 窗 口 的 垂 直 滚 动 条 时 , 框 架 调 用 此 成 员 函 数 。

希 望 滚 动 框 被 拖 动 时 给 出 一 定 反 馈 的 应 用 程 序 通 常 会 使 用 OnVScroll 函 数 。

如 果 OnVScroll 滚 动 此 CWnd 对 象 的 内 容 , 则 必 须 调 用 SetScrollPos 成 员 函 数来 恢 复 滚 动 条 的 位 置 。

注 意 框 架 调 用 这 个 成 员 函 数 来 使 你 的 应 用 程 序 可 以 处 理 一 个 Windows 消 息 。 传 递 给 你 的 函 数 的 参 数 反 映 了 在 消 息 收 到 时 框 架 收 到 的 参 数 。 如果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 这 个 实 现 将 使 用 最 初 随 着 消 息 传 递 过来 的 参 数 , 而 不 是 使 用 你 提 供 给 函 数 的 参 数 。

请 参 阅 CWnd::SetScrollPos, CWnd::OnHScroll, WM_VSCROLL

CWnd::OnVScrollClipboard

afx_msg void OnVScrollClipboard( CWnd* pClipAppWnd , UINT nSBCode , UINT

nPos );

参 数

pClipAppWnd

指 定 了 一 个 指 向 Clipboard-viewer 窗 口 的 指 针 。 该 指 针 可 能 是 临 时 的 , 不能 被 保 存 来 给 将 来 使 用 。

nSBCode

指 定 下 列 滚 动 条 值 之 一 :

  • SB_BOTTOM 滚 动 到 底 部 。

  • SB_ENDSCROLL 结 束 滚 动 。

  • SB_LINEDOWN 向 下 滚 动 一 行 。

  • SB_LINEUP 向 上 滚 动 一 行 。

  • SB_PAGEDOWN 向 下 滚 动 一 页 。

  • SB_PAGEUP 向 上 滚 动 一 页 。

  • SB_THUMBPOSITION 滚 动 到 一 个 绝 对 位 置 。 当 前 位 置 在

    nPos 中 指定。

  • SB_THUMBTRACK 拖 动 滚 动 框 到 指 定 位 置 。 当 前 位 置 在

    nPos 中 指定。

  • SB_TOP 滚 动 到 顶 部 。

nPos

如 果 滚 动 条 代 码 是 SB_THUMBPOSITION , 则 此 参 数 包 含 了 滚 动 框 的 位

说 明

当 剪 贴 板 数 据 具 有 CF_OWNERDISPLAY 格 式 , 并 且 在 剪 贴 板 查 看 者 的 垂 直 滚动 条 中 发 生 了 一 个 事 件 时 , 剪 贴 板 查 看 者 调 用 该 剪 贴 板 拥 有 者 的OnVScrollClipboard 成 员 函 数 。 该 拥 有 者 应 该 滚 动 剪 贴 板 图 象 使 适 当 的 区 域 无效 , 并 更 新 滚 动 条 的 值 。

注 意 框 架 调 用 这 个 成 员 函 数 来 使 你 的 应 用 程 序 可 以 处 理 一 个 Windows 消 息 。 传 递 给 你 的 函 数 的 参 数 反 映 了 在 消 息 收 到 时 框 架 收 到 的 参 数 。 如果 你 调 用 了 这 个 函 数 的 基 类 实 现 , 这 个 实 现 将 使 用 最 初 随 着 消 息 传 递 过来 的 参 数 , 而 不 是 使 用 你 提 供 给 函 数 的 参 数 。

请 参 阅 CWnd::Invalidate, CWnd::OnHScrollClipboard, CWnd::InvalidateRect, WM_VSCROLLCLIPBOARD, CWnd::Default

CWnd::OnWindowPosChanged

afx_msg void OnWindowPosChanged( WINDOWPOS* lpwndpos );

参 数

lpwndpos

和 位 置 的 信 息 。

说 明

当 调 用 SetWindowPos 成 员 函 数 或 其 它 窗 口 管 理 函 数 改 变 了 窗 口 的 尺 寸 、 位 置或 Z 次 序 时 , 框 架 调 用 此 成 员 函 数 。

此 函 数 的 缺 省 实 现 给 窗 口 发 送 WM_SIZE 和 W M _ M O V E 。 如 果 应 用 程 序 在 处理 OnWindowPosChanged 调 用 时 没 有 调 用 它 的 基 类 , 则 不 发 送 这 些 消 息 。 在OnWindowPosChanged 调 用 中 不 调 用 它 的 基 类 版 来 完 成 一 定 或 修 改 尺 寸 的 处 理将 是 更 加 有 效 的 。

注 意 框 架 这 个 成 员 函 数 来 使 你 的 应 用 程 序 可 以 处 理 一 个 Windows 消息 。 传 递 给 你 的 函 数 的 参 数 反 映 了 在 消 息 收 到 时 框 架 收 到 的 参 数 。 如 果你 调 用 了 这 个 函 数 的 基 类 实 现 , 这 个 实 现 将 使 用 最 初 随 着 消 息 传 递 过 来的 参 数 , 而 不 是 使 用 你 提 供 给 函 数 的 参 数 。

请 参 阅 WM_WINDOWPOSCHANGED

CWnd::OnWindowPosChanging

afx_msg void OnWindowPosChanging( WINDOWPOS* lpwndpos );

参 数

lpwndpos

指 向 一 个 W INDOWPOS 数 据 结 构 , 其 中 包 含 了 有 关 窗 口 新 的 大 小 和 位置 的 信 息 。

说 明

当 由 于 调 用 了 SetWindowPos 成 员 函 数 或 其 它 的 窗 口 管 理 函 数 , 窗 口 的 大 小 、位 置 或 Z 轴 次 序 将 要 发 生 变 化 时 , 框 架 就 调 用 这 个 成 员 函 数 。

应 用 程 序 可 以 设 置 或 清 除 W INDOWPOS 结 构 中 flags 成 员 的 适 当 的 位 以 便 防 止窗 口 发 生 变 化 。

对 于 具 有 WS_OVERLAPPED 或 WS_THICKFRAME 风 格 的 窗 口 , 缺 省 的 实 现向 窗 口 发 送 一 个 WM_GETMINMAXINFO 消 息 。 这 被 用 来 使 窗 口 的 新 大 小 和 位置 有 效 , 并 强 制 使 用 CS_BYTEALIGNCLIENT 和 CS_BYTEALIGN 客 户 风 格 。应 用 程 序 可 以 不 调 用 基 类 而 替 换 这 个 功 能 。

注 意 框 架 这 个 成 员 函 数 来 使 你 的 应 用 程 序 可 以 处 理 一 个 Windows 消息 。 传 递 给 你 的 函 数 的 参 数 反 映 了 在 消 息 收 到 时 框 架 收 到 的 参 数 。 如 果你 调 用 了 这 个 函 数 的 基 类 实 现 , 这 个 实 现 将 使 用 最 初 随 着 消 息 传 递 过 来的 参 数 , 而 不 是 使 用 你 提 供 给 函 数 的 参 数 。

请 参 阅 CWnd::OnWindowPosChanged, WM_WINDOWPOSCHANGING

CWnd::OnWinIniChange

afx_msg void OnWinIniChange( LPCTSTR lpszSection );

参 数

lpszSection

指 向 一 个 字 符 串 , 该 字 符 串 指 定 了 已 改 变 部 分 的 名 称 ( 该 字 符 串 不 包 括围 绕 该 部 分 名 称 的 方 括 号 ) 。

说 明

在 W indows 初 始 化 文 件 W IN .INI 发 生 了 一 个 改 变 后 , 框 架 调 用 此 成 员 函 数 。 W indows 函 数 SystemParametersInfo 在 应 用 程 序 使 用 此 函 数 修 改 了 W IN .INI 文件 中 的 一 个 设 置 之 后 调 用 OnWinIniChange 。

要 向 所 有 的 顶 层 窗 口 发 送 WM_WININICHANGE 消 息 , 应 用 程 序 可 以 通 过 将 其

hwnd 参 数 设 置 为 HWND_BROADCAST 来 使 用 W indows 函 数 SendMessage 。

如 果 一 个 应 用 程 序 同 时 改 变 了 W IN.INI 中 的 不 同 部 分 , 应 用 程 序 应 该 将lpszSection 设 置 为 NULL , 发 送 一 个 WM_WININICHANGE 消 息 ; 否 则 应 用 程序 在 每 次 对 W IN.INE 作 一 个 改 变 时 就 应 该 发 送 一 个 WM_WININICHANGE 消息 。

NULL , 则 应 用 程 序 将 检 查 W IN.INI 中 影 响 这 个 应 用 程 序 的 所 有 部 分 。

注 意 框 架 这 个 成 员 函 数 来 使 你 的 应 用 程 序 可 以 处 理 一 个 Windows 消息 。 传 递 给 你 的 函 数 的 参 数 反 映 了 在 消 息 收 到 时 框 架 收 到 的 参 数 。 如 果你 调 用 了 这 个 函 数 的 基 类 实 现 , 这 个 实 现 将 使 用 最 初 随 着 消 息 传 递 过 来的 参 数 , 而 不 是 使 用 你 提 供 给 函 数 的 参 数 。

请 参 阅 ::SendMessage, ::SystemParametersInfo, WM_WININICHANGE

CWnd::OnWndMsg

virtual BOOL OnWndMsg( UINT message , W P A R A M wParam , LPARAM lParam , LRESULT* pResult );

返 回 值

如 果 这 个 消 息 被 处 理 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

message

指 定 了 被 发 送 的 消 息 。

指 定 了 与 消 息 有 关 的 附 加 信 息 。

lParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

pResult

W indowProc 的 返 回 值 。 与 消 息 有 关 , 可 能 是 NULL 。

说 明

这 个 成 员 函 数 是 由 W indowProc 调 用 的 , 或 者 是 在 消 息 反 射 时 调 用 。

有 关 消 息 反 射 的 更 多 信 息 参 见 联 机 的 《 Visual C++ 程 序 员 指 南 》 中 的 “ 处 理 反射 的 消 息 ” 。

请 参 阅 CWnd::OnChildNotify, CWnd::SendChildNotifyLastMsg, CWnd::ReflectChildNotify, CCmdTarget::OnCmdMsg, CWnd::ReflectLastMsg

CWnd::OpenClipboard

BOOL OpenClipboard( );

返 回 值

如 果 通 过 CWnd 打 开 了 剪 贴 板 , 则 返 回 非 零 值 ; 如 果 其 它 应 用 程 序 或 窗 口 已 经打 开 了 剪 贴 板 , 则 返 回 0 。

说 明

打 开 剪 贴 板 。 在 调 用 W indows 的 CloseClipboard 函 数 之 前 , 其 它 应 用 程 序 将 不能 修 改 剪 贴 板 的 内 容 。

在 调 用 W indows 的 EmptyClipboard 函 数 之 前 , 当 前 的 CWnd 对 象 将 不 会 称 为剪 贴 板 的 拥 有 者 。

请 参 阅 ::CloseClipboard, ::EmptyClipboard, ::OpenClipboard

CWnd::PostMessage

BOOL PostMessage( UINT message , W P A R A M wParam = 0, LPARAM lParam = 0 );

返 回 值

如 果 公 布 了 消 息 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

message

指 定 了 要 公 布 的 消 息 。

wParam

指 定 了 附 加 的 消 息 信 息 。 这 个 参 数 的 内 容 依 赖 于 要 公 布 的 消 息 。

lParam

指 定 了 附 加 的 消 息 信 息 。 这 个 参 数 的 内 容 依 赖 于 要 公 布 的 消 息 。

说 明

这 个 函 数 将 一 个 消 息 放 入 窗 口 的 消 息 队 列 , 然 后 直 接 返 回 , 并 不 等 待 对 应 的 窗口 处 理 消 息 。 消 息 队 列 中 的 消 息 是 通 过 调 用 W indows 的 GetMessage 或PeekMessage 函 数 来 获 得 的 。

可 以 通 过 W indows 的 PostMessage 函 数 来 访 问 其 它 应 用 程 序 。

请 参 阅

::GetMessage, ::PeekMessage, ::PostMessage, ::PostAppMessage, CWnd::SendMessage

CWnd::PostNcDestroy

virtual void PostNcDestroy( );

参 数

在 窗 口 被 销 毁 以 后 , 缺 省 的 OnNcDestroy 成 员 函 数 调 用 这 个 函 数 。 派 生 类 可 以利 用 这 个 函 数 来 执 行 自 定 义 的 清 除 工 作 , 比 如 删 除 指 针 。

请 参 阅 CWnd::OnNcDestroy

CWnd::PreCreateWindow

virtual BOOL PreCreateWindow( CREATESTRUCT& cs );

返 回 值

如 果 要 继 续 窗 口 的 创 建 过 程 , 则 返 回 非 零 值 ; 返 回 0 则 表 明 创 建 过 程 失 败 。

参 数

cs

一个 CREATESTRUCT 结 构 。

框 架 在 与 CWnd 对 象 相 连 接 的 W indows 窗 口 被 创 建 之 前 调 用 这 个 成 员 函 数 。永 远 不 要 直 接 调 用 这 个 函 数 。

这 个 函 数 的 缺 省 实 现 检 验 窗 口 类 名 是 否 为 NULL , 如 是 , 则 用 适 当 的 缺 省 值 来代 替 。 重 载 这 个 函 数 以 在 窗 口 被 创 建 之 前 修 改 CREATESTRUCT 结 构 。

每 个 从 CWnd 派 生 的 类 都 在 它 重 载 的 PreCreateWindow 中 加 入 了 自 己 的 功 能 。在 设 计 时 , 没 有 描 述 这 些 派 生 的 PreCreatWindow 。 要 确 定 每 个 类 的 适 当 的 风 格以 及 风 格 之 间 的 相 互 依 赖 关 系 , 你 可 以 检 查 与 你 的 应 用 程 序 的 基 类 有 关 的 MFC 源 代 码 。 如 果 你 选 择 了 重 载 PreCreateWindow , 则 你 可 以 使 用 从 MFC 源 代 码 中收 集 的 信 息 来 确 定 你 的 应 用 程 序 的 基 类 中 使 用 的 风 格 是 否 能 够 提 供 你 需 要 的 功能 。

有 关 改 变 窗 口 风 格 的 更 多 信 息 参 见 联 机 的 《 V isual C++ 程 序 员 指 南 》 中 的 “ 改变 MFC 创 建 的 窗 口 的 风 格 ” 。

请 参 阅 CWnd::Create, CWnd::CreateEx, CREATESTRUCT

CWnd::PreSubclassWindow

virtual void PreSubclassWindow( );

框 架 调 用 这 个 成 员 函 数 以 允 许 在 窗 口 被 子 类 化 之 前 进 行 其 它 必 要 的 子 类 化 。 重载 这 个 函 数 以 允 许 控 件 的 动 态 子 类 化 。 这 是 个 高 级 可 重 载 函 数 。

请 参 阅 CWnd::SubclassWindow, CWnd::UnsubclassWindow, CWnd::GetSuperWndProcAddr, CWnd::DefWindowProc, C W nd::SubclassDlgItem, CWnd::Attach, C W nd::PreCreate W indow

CWnd::PreTranslateMessage

virtual BOOL PreTranslateMessage( MSG* pMsg );

返 回 值

如 果 消 息 被 转 换 但 是 不 会 被 分 派 , 则 返 回 非 零 值 ; 如 果 消 息 没 有 被 转 换 并 且 要被 分 派 , 则 返 回 0 。

参 数

pMsg

指 向 一 个 MSG 结 构 , 其 中 包 含 了 要 处 理 的 消 息 。

C W inApp 类 使 用 这 个 函 数 以 在 消 息 被 分 派 到 W indows 的 Translate M essage 和

D ispatch M essage 函 数 之 前 进 行 转 换 。

请 参 阅 ::Translate M essage, ::IsDialog M essage, CWinApp::PreTranslateMessage

CWnd::Print

void Print( CDC* pDC , DWORD dwFlags ) const;

参 数

pDC

指 向 设 备 环 境 的 指 针 。

dwFlags

指 定 了 绘 图 选 项 。 这 个 参 数 可 以 是 下 列 标 志 中 的 一 个 或 多 个 :

  • PRF_CHECKVISIBLE 仅 当 窗 口 可 见 时 才 画 出 窗 口 。

  • PRF_CHILDREN 画 出 所 有 可 见 的 子 窗 口 。

  • PRF_CLIENT 画 出 窗 口 的 客 户 区 。

  • PRF_ERASEBKGND 在 画 出 窗 口 之 前 擦 去 背 景 。

  • PRF_NONCLIENT 画 出 窗 口 的 非 客 户 区 。

  • PRF_OWNED 画 出 拥 有 的 所 有 窗 口 。

说 明

调 用 这 个 成 员 函 数 以 在 指 定 的 设 备 环 境 中 画 出 当 前 窗 口 , 通 常 是 在 打 印 机 设 备环 境 中 。

CWnd::DefWindowProc 函 数 根 据 指 定 的 绘 图 选 项 处 理 这 个 消 息 :

  • 如 果 指 定 了 PRF_CHECKVISIBLE 并 且 窗 口 不 可 见 , 则 不 做 任

    何 操 作 。

  • 如 果 指 定 了 PRF_NONCLIEN T, 则 在 指 定 的 设 备 环 境 中 画 出

    非 客 户 区 。

  • 如 果 指 定 了 PRF_ERASEBKGND , 则 向 窗 口 发 送 一 条

    WM_ERASEBKGND

消 息 。

  • 如 果 指 定 了 PRF_PRINTCLIEN T, 则 向 窗 口 发 送 一 条

    WM_PRINTCLIENT

消 息 。

  • 如 果 指 定 了 PRF_PRINTCHILDREN , 则 向 每 个 可 见 的 子 窗 口

    发 送 一 条

WM_PRINT 消 息 。

  • 如 果 指 定 了 PRF_OWNED ,则 向 拥 有 的 每 个 可 见 窗 口 发 送

    一 条 WM_PRINT

消 息 。

请 参 阅 WM_PRINT, WM_PRINTCLIENT

CWnd::PrintClient

void PrintClient( CDC* pD C , DWORD dwFlags ) const;

参 数

pDC

指 向 设 备 环 境 的 指 针 。

dwFlags

指 定 了 绘 图 选 项 。 这 个 参 数 可 以 是 这 些 标 志 中 的 一 个 或 多 个 :

  • PRF_CHECKVISIBLE 仅 当 窗 口 可 见 时 才 画 出 窗 口 。

  • PRF_CHILDREN 画 出 所 有 可 见 的 子 窗 口 。

  • PRF_CLIENT 画 出 窗 口 的 客 户 区 。

  • PRF_ERASEBKGND 在 画 出 窗 口 之 前 擦 除 背 景 。

  • PRF_NONCLIENT 画 出 窗 口 的 非 客 户 区 。

  • PRF_OWNED 画 出 拥 有 的 所 有 窗 口 。

说 明

调 用 这 个 成 员 函 数 以 在 指 定 的 设 备 环 境 ( 通 常 是 一 个 打 印 机 设 备 环 境 ) 中 画 出任 何 窗 口 。

请 参 阅 WM_PRINTCLIENT

CWnd::RedrawWindow

BOOL RedrawWindow( LPCRECT lpRectUpdate = NULL, CRgn* prgnUpdate = NULL, UINT flags = RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE );

返 回 值

如 果 窗 口 被 成 功 地 重 画 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpRectUpdate

指 向 一 个 RECT 结 构 , 其 中 包 含 了 更 新 区 域 的 坐 标 。 如 果 prgnUpdate 中包 含 了 有 效 的 区 域 句 柄 , 则 这 个 参 数 将 被 忽 略 。

prgnUpdate

表 示 了 更 新 区 域 。 如 果 prgnUpdatelpRectUpdate 都 为 NULL , 则 整 个客 户 区 将 被 加 入 更 新 区 域 。

flags

下 面 的 标 志 被 用 于 使 窗 口 无 效 :

  • RDW_ERASE 使 窗 口 在 重 画 时 接 收 到 一 个 W M _ERASEBKGND 消息

    。 必 须 同 时 指 定 RDW_INVALIDATE 标 志 ; 否 则 RDW_ERASE 标志 将 没 有 效 果 。

  • RDW_FRAME 使 窗 口 非 客 户 区 中 与 更 新 区 域 重 叠 的 任 何 部

    分 接 收到 一 条 WM_NCPAINT 消 息 。必 须 同 时 指 定 RDW_INVALIDATE 标 志 , 否则 RDW_FRAME 标 志 将 没 有 效 果 。

  • RDW_INTERNALPAINT 使 一 条 WM_PAINT 消 息 被 传 递 到 窗 口 , 而

    不 管 窗 口 是 否 包 含 一 个 无 效 区 域 。

  • RDW_INVALIDATE 使 lpRectUpdateprgnUpdate ( 仅 有 一 个 可

    能为 NULL ) 无 效 。 如 果 这 个 两 个 参 数 都 为 NULL , 则 整 个 窗 口 都 无 效 。

下 面 的 标 志 被 用 于 使 窗 口 有 效 :

  • RDW_NOERASE 禁 止 任 何 未 处 理 的 WM_ERASEBKGND 消 息 。

  • RDW_NOFRAME 禁 止 任 何 未 处 理 的 WM_NCPAINT 消 息 。 这 个 标志

    必 须 与 RDW_VALIDATE 一 起 使 用 ,通 常 也 与 RDW_NOCHILDREN 一 起 使 用 。 这 个 选 项 必 须 小 心 使 用 , 因 为 它 可 能 会 使 窗 口 的 某 些 部 分不 能 正 确 地 画 出 。

  • RDW_NOINTERNALPAINT 禁 止 任 何 未 处 理 的 内 部 WM_PAINT 消息 。

    这 个 标 志 不 影 响 从 无 效 区 域 产 生 的 WM_PAINT 消 息 。

  • RDW_VALIDATE 使 lpRectUpdateprgnUpdate ( 仅 有 一 个 可 能

NULL ) 有 效 。 如 果 这 个 两 个 参 数 都 为 NULL , 则 整 个 窗 口 都 有 效 。 这个 标 志 不 影 响 内 部 WM_PAINT 消 息 。

下 面 的 标 志 控 制 着 何 时 产 生 重 画 动 作 。 除 非 指 定 了 这 些 位 , 否 则

RedrawWindow 函 数 不 会 执 行 绘 图 动 作 。

  • RDW_ERASENOW 如 果 有 必 要 , 则 在 函 数 返 回 前 使 涉 及 的 窗

    口( 如RDW_ALLCHILDREN 和 RDW_NOCHILDREN 标 志 所 指 定 的 ) 接 收到 W M _NCPAINT 和 W M _ERASEBKGND 消 息 。 WM_PAINT 消 息 将被 延 缓 。

  • RDW_UPDATENOW 如 果 有 必 要 , 则 在 函 数 返 回 前 使 涉 及 的 窗

(如 RDW_ALLCHILDREN 和 RDW_NOCHILDREN 标 志 所 指 定 的 ) 接 收 到 WM_NCPAINT , WM_ERASEBKGND 和 WM_PAINT 消 息 。

在 缺 省 情 况 下 , RedrawWindow 函 数 影 响 的 窗 口 依 赖 于 指 定 的 窗 口 是 否具有 WS_CLIPCHILDREN 风 格 。 WS_CLIPCHILDREN 窗 口 的 子 窗 口 不会 被 影 响 。 但 是 , 那 些 不 具 有 WS_CLIPCHILDREN 风 格 的 窗 口 将 被 递归 地 有 效 或 无 效 , 直 到 遇 见 具 有 WS_CLIPCHILDREN 风 格 的 窗 口 。 下面 的 标 志 控 制 着 RedrawWindow 函 数 将 影 响 哪 些 窗 口 :

  • RDW_ALLCHILDREN 在 重 画 操 作 中 包 含 子 窗 口 , 如 果 有 的 话

  • RDW_NOCHILDREN 在 重 画 操 作 中 不 包 括 子 窗 口 , 如 果 有 的

    化 。

说 明

这 个 函 数 更 新 给 定 窗 口 的 客 户 区 中 指 定 的 矩 形 或 区 域 。

当 RedrawWindow 成 员 函 数 被 用 于 使 捉 摸 窗 口 的 部 分 无 效 的 时 候 , 该 窗 口 不 接收 WM_PAINT 消 息 。如 果 要 重 画 桌 面 ,应 用 程 序 必 须 使 用 CWnd::ValidateRgn , CWnd::InvalidateRgn , CWnd::UpdateWindow 或 ::RedrawWindow 。

CWnd::ReflectChildNotify

BOOL ReflectChildNotify(UINT message , W P A R A M wParam , LPARAM lParam , LRESULT* pResult );

返 回 值

如 果 消 息 被 反 射 , 则 返 回 TRU E ; 否 则 返 回 FALSE 。

参 数

message

指 定 了 要 反 射 的 消 息 。

wParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

lParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

pResult

子 窗 口 生 成 的 结 果 , 将 要 由 父 窗 口 返 回 。 可 以 是 NULL 。

说 明

这 个 消 息 函 数 是 由 框 架 在 OnChildNotify 内 调 用 的 。 它 是 在 将 消 息 反 射 到 它 的来 源 时 使 用 的 帮 助 函 数 。

反 射 消 息 是 用 CWnd::OnWndMsg 或 CCmdTarget::OnCmdMsg 直 接 发 送 的 。

有 关 消 息 反 射 的 更 多 信 息 参 见 联 机 的 《 Visual C++ 程 序 员 指 南 》 中 的 “ 处 理 反射 消 息 ” 。

请 参 阅 CWnd::OnChildNotify, CWnd::SendChildNotifyLastMsg, CWnd::OnWndMsg,C C mdTarget::OnCmdMsg, CWnd::ReflectLastMsg

CWnd::ReflectLastMsg

static BOOL PASCAL ReflectLastMsg( HWND hWndChild , LRESULT* pResult = NULL );

返 回 值

如 果 消 息 被 处 理 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

hWndChild

子 窗 口 句 柄 。

pResult

子 窗 口 生 成 的 结 果 , 将 要 由 父 窗 口 返 回 。 可 以 是 NULL 。

说 明

这 个 成 员 函 数 是 由 框 架 调 用 的 , 用 于 将 最 近 的 消 息 反 射 到 子 窗 口 。

如 果 hWndChild 标 识 的 窗 口 是 一 个 OLE 控 件 或 永 久 映 射 中 的 窗 口 , 则 这 个 成员 函 数 调 用 SendChildNotifyLastMsg 。

有 关 消 息 反 射 的 更 多 信 息 参 见 Visual C++ 程 序 员 联 机 指 南 中 的 “ 处 理 反 射 消息 ” 。

请 参 阅 CWnd::OnChildNotify, CWnd::SendChildNotifyLastMsg, CWnd::ReflectChildNotify, CCmdTarget::OnCmdMsg

int ReleaseDC( CDC* pDC );

返 回 值

如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pDC

标 识 了 要 释 放 的 设 备 环 境 。

说 明

释 放 设 备 环 境 , 以 供 其 它 应 用 程 序 使 用 。 ReleaseDC 成 员 函 数 的 效 果 依 赖 于 设备 环 境 的 类 型 。

对 于 GetWindowDC 和 GetDC 成 员 函 数 的 每 一 次 调 用 , 应 用 程 序 都 应 当 调 用

ReleaseDC 成 员 函 数 。

请 参 阅 CWnd::GetDC, CWnd::GetWindowDC, ::ReleaseDC

void RepositionBars( UINT nIDFirs t, UINT nIDLas t, UINT nIDLeftOve r, UINT nFlag = CWnd::reposDefault, LPRECT lpRectParam = NULL, LPCRECT lpRectClient = NULL, BOOL bStretch = TRUE);

参 数

nIDFirst

要 重 新 定 位 并 改 变 大 小 的 控 制 条 范 围 中 的 第 一 个 控 制 条 的 ID 。

nIDLast

要 重 新 定 位 并 改 变 大 小 的 控 制 条 范 围 中 的 最 后 一 个 控 制 条 的 ID 。

nIDLeftOver

指 定 了 填 充 客 户 区 其 余 部 分 的 方 格 的 ID 。

nFlag

可 以 具 有 下 列 值 :

  • CWnd::reposDefault 实 现 控 制 条 的 布 局 。 lpRectParam 没 有 被

    使 用 , 可 以 是 NULL 。

  • CWnd::reposQuery 没 有 执 行 控 制 条 的 布 局 , 相 反 用 客 户 区

    的 大 小 初始 化 了 lpRectParam , 就 像 已 经 完 成 了 布 局 一 样 。

    • CWnd::reposExtra 将 lpRectParam 的 值 加 到 nIDLast 的 客 户 区

      上 , 并执 行 布 局 。

lpRectParam

指 向 一 个 RECT 结 构 ; 其 用 法 依 赖 于 nFlag 的 值 。

lpRectClient

指 向 一 个 RECT 结 构 , 其 中 包 含 了 可 用 的 客 户 区 。 如 果 为 NULL , 则 窗口 的 客 户 区 将 被 使 用 。

bStretch

指 明 控 制 条 是 否 要 被 缩 放 到 框 架 的 大 小 。

说 明

调 用 这 个 函 数 以 在 窗 口 的 客 户 区 中 重 定 位 控 制 条 并 改 变 其 大 小 。 nIDFirst 和nIDLast 参 数 定 义 了 要 在 客 户 区 内 重 定 位 的 控 制 条 ID 的 范 围 。 nIDLeftOver 参数 指 定 了 被 用 来 重 定 位 并 改 变 大 小 , 以 填 充 客 户 区 中 没 有 被 控 制 条 覆 盖 的 区 域的 子 窗 口 ( 通 常 是 视 ) 的 ID 。

请 参 阅 CFrame W nd::RecalcLayout

CWnd::RunModalLoop

int RunModalLoop( DWORD dwFlags );

返 回 值

指 定 了 传 递 给 EndModalLoop 成 员 函 数 的 nResult 参 数 的 值 , 随 后 该 函 数 被 用 于结 束 模 式 循 环 。

参 数

dwFlags

指 定 了 要 被 发 送 的 W indows 消 息 。 可 以 是 下 列 值 之 一 :

  • MLF_NOIDLEMSG 不 向 父 窗 口 发 送 WM_ENTERIDLE 消 息 。

  • MLF_NOKICKIDLE 不 向 窗 口 发 送 WM_KICKIDLE 消 息 。

  • MLF_SHOWONIDLE 当 消 息 队 列 变 为 空 闲 时 显 示 窗 口 。

说 明

调 用 这 个 成 员 函 数 以 获 得 、 转 换 或 分 派 消 息 , 直 到 ContinueModal 返 回 FALSE 。在 缺 省 情 况 下 , ContinueModal 在 调 用 EndModalLoop 之 后 返 回 FALSE 。 返 回作 为 EndModalLoop 的 nResult 提 供 的 值 。

请 参 阅 EndModalLoop, WM_ENTERIDLE

CWnd::ScreenToClient

void ScreenToClient( LPPOINT lpPoint ) const; void ScreenToClient( LPRECT lpRect ) const;

参 数

lpPoint

指 向 一 个 CPoint 对 象 或 POINT 结 构 , 其 中 包 含 了 要 转 换 的 屏 幕 坐 标 。

lpRect

指 向 一 个 CRect 对 象 或 RECT 结 构 , 其 中 包 含 了 要 转 换 的 屏 幕 坐 标 。

说 明

将 显 示 器 上 给 定 点 或 矩 形 的 屏 幕 坐 标 转 换 为 客 户 坐 标 。

ScreenToClient 成 员 函 数 将 lpPoint 或 lpRect 给 定 的 屏 幕 坐 标 替 换 为 客 户 坐 标 。新 的 坐 标 是 相 对 于 CWnd 客 户 区 的 左 上 角 的 。

请 参 阅 CWnd::ClientToScreen, ::ScreenToClient

CWnd::ScrollWindow

void ScrollWindow( int xAmount , int yAmoun t , LPCRECT lpRect = NULL, LPCRECT lpClipRect = NULL );

参 数

xAmount

指 定 了 水 平 滚 动 的 量 , 使 用 设 备 单 位 。 在 左 滚 时 , 该 参 数 必 须 为 负 。

yAmount

指 定 了 垂 直 滚 动 的 量 , 使 用 设 备 单 位 。 在 上 滚 时 , 该 参 数 必 须 为 负 。

lpRect

指 向 一 个 CRect 对 象 或 RECT 结 构 , 指 定 了 要 滚 动 的 客 户 区 的 部 分 。 如果 lpRect 为 NULL , 则 将 滚 动 整 个 客 户 区 。 如 果 光 标 区 域 与 滚 动 矩 形 重叠 , 则 插 字 符 将 被 重 定 位 。

lpClipRect

指 向 一 个 CRect 对 象 或 RECT 结 构 , 指 定 了 要 滚 动 的 裁 剪 区 域 。 只 有 这个 矩 形 中 的 位 才 会 被 滚 动 。 在 矩 形 之 外 的 位 不 会 被 影 响 , 即 使 它 们 是 在lpRect 矩 形 之 内 。 如 果 lpClipRect 为 NULL , 则 不 会 在 滚 动 矩 形 上 进 行 裁剪。

说 明

这 个 函 数 滚 动 当 前 CWnd 对 象 的 客 户 区 内 容 。

如 果 插 字 符 在 要 滚 动 的 CWnd 之 内 , 则 ScrollWindow 自 动 将 插 字 符 隐 藏 , 以避 免 它 被 擦 除 , 然 后 当 滚 动 完 成 以 后 , 再 恢 复 插 字 符 。 插 字 符 的 位 置 将 相 应 地调 整 。

ScrollWindow 成 员 函 数 所 涉 及 的 区 域 将 不 会 被 重 画 , 但 是 将 被 加 入 当 前 CWnd 对 象 的 更 新 区 域 。 应 用 程 序 最 终 将 接 收 到 一 条 WM_PAINT 消 息 , 通 知 它 这 个区 域 需 要 重 画 。要 在 滚 动 完 成 的 同 时 重 画 涉 及 的 区 域 ,则 应 在 调 用 ScrollWindow 之 后 立 即 调 用 UpdateWindow 成 员 函 数 。

如 果 lpRect 为 NULL , 则 窗 口 的 任 何 子 窗 口 的 位 置 将 被 设 为 xAmoutyAmout 指 定 的 偏 移 , 并 且 CWnd 中 任 何 无 效 ( 未 画 出 ) 区 域 也 被 加 上 偏 移 。 当 lpRect 为 NULL 的 时 候 , Scroll W indow 更 快 一 些 。

如 果 lpRect 不 为 NULL , 则 子 窗 口 的 位 置 不 发 生 变 化 , 并 且 CWnd 的 无 效 区 域也 没 有 偏 移 。 当 lpRect 为 NULL 的 时 候 , 如 果 要 防 止 更 新 问 题 , 则 应 在 调 用ScrollWindow 之 前 调 用 UpdateWindow 成 员 函 数 以 重 画 CWnd 。

请 参 阅 CWnd::UpdateWindow, ::Scroll W indow

CWnd::ScrollWindowEx

int Scroll W indowEx( int dx , int dy , LPCRECT lpRectScroll , LPCRECT lpRectClip , CRgn* prgnUpdate , LPRECT lpRectUpdate , UINT flags );

返 回 值

如 果 函 数 成 功 , 则 返 回 值 为 SI MPLEREGION ( 矩 形 的 无 效 矩 形 ) , COMPLEXREGION ( 非 矩 形 无 效 区 域 ; 重 叠 矩 形 ) 或 NULLREGION ( 没 有 无效 区 域 ) ; 否 则 返 回 值 为 ERROR 。

参 数

d x

指 定 了 水 平 滚 动 的 量 , 使 用 设 备 单 位 。 在 左 滚 时 , 该 参 数 必 须 为 负 。

d y

指 定 了 垂 直 滚 动 的 量 , 使 用 设 备 单 位 。 在 上 滚 时 , 该 参 数 必 须 为 负 。

lpRect Scroll

指向 RECT 结 构 , 指 定 了 要 滚 动 的 客 户 区 的 部 分 。 如 果 该 参 数 为 NULL , 则 将 滚 动 整 个 客 户 区 。

lpRect Clip

指向 RECT 结 构 ,指 定 了 要 滚 动 的 裁 剪 区 域 。这 个 结 构 优 先 于 lpRectScroll 指 定 的 矩 形 。 只 有 这 个 矩 形 中 的 位 才 会 被 滚 动 。 在 矩 形 之 外 的 位 不 会 被影 响 , 即 使 它 们 是 在 lpRectScroll 矩 形 之 内 。 如 果 这 个 参 数 为 NULL , 则不 会 在 滚 动 矩 形 上 进 行 裁 剪 。

prgnUpdate

标 识 了 被 修 改 的 区 域 , 用 于 保 存 因 滚 动 而 无 效 的 区 域 。 这 个 参 数 可 能 为

NULL 。

lpRectUpdate

指 向 一 个 RECT 结 构 , 该 结 构 将 接 收 因 滚 动 而 无 效 的 矩 形 的 边 界 。 这 个参 数 可 能 为 NULL 。

flags

可 以 具 有 下 列 值 之 一 :

  • SW_ERASE 当与 SW_INVALIDATE 一 起 设 置 时 , 向 窗 口 发 送 一 条

WM_ERASEBKGND 消 息 以 擦 除 新 的 无 效 区 域 。

  • SW_INVALIDATE 在 滚 动 后 使 prgnUpdate 标 识 的 区 域 无 效 。

  • SW_SCROLLCHILDREN 将 与 lpRectScroll 所 指 定 的 矩 形 相 交 的

    所有 子 窗 口 滚 动 dxdy 所 指 定 的 数 目 的 像 素 。W indows 向 与 lpRectScroll 相 交 的 所 有 子 窗 口 发 送 W M _ M O V E 消 息 , 即 使 它 们 没 有 移 动 。 当 子窗 口 被 滚 动 并 且 光 标 矩 形 与 滚 动 矩 形 相 交 时 , 插 字 符 被 重 定 位 。

说 明

这 个 函 数 滚 动 窗 口 的 客 户 区 内 容 。 该 函 数 与 ScrollWindow 函 数 类 似 , 并 具 有 一些 附 加 特 性 。

如 果 没 有 指 定 S W _INVALIDATE 和 SW_ERASE , 则 ScrollWindowEx 成 员 函数 并 不 使 滚 动 的 区 域 无 效 。 如 果 设 置 了 这 两 者 之 一 , 则 ScrollWindowEx 将 使区 域 无 效 。 在 应 用 程 序 调 用 UpdateWindow 成 员 函 数 , 或 调 用 RedrawWindow 成 员 函 数 ( 指 定 了 RDW_UPDATENOW 或 RDW_ERASENOW ) , 或 从 应 用 程序 队 列 中 获 得 WM_PAINT 消 息 之 前 , 这 个 区 域 将 不 会 被 更 新 。

如 果 窗 口 具 有 WS_CLIPCHILDREN 风 格 , 则 prgnUpdate 和 lpRectUpdate 指 定的 区 域 代 表 了 必 须 更 新 的 滚 动 窗 口 的 全 部 区 域 , 包 括 子 窗 口 中 所 有 需 要 更 新 的区 域 。

如 果 指 定 了 SW_SCROLLCHILDREN 标 志 , 并 且 滚 动 了 子 窗 口 的 一 个 部 分 , 则W indows 将 不 会 正 确 地 更 新 屏 幕 。 在 源 矩 形 之 外 的 滚 动 的 子 窗 口 的 部 分 将 不 会被 擦 除 ,并 且 在 新 的 位 置 也 不 会 被 正 确 地 重 画 。使 用 W indows 的 DeferWindowPos 函 数 以 移 动 不 完 全 位 于 lpRectScroll 矩 形 之 内 的 子 窗 口 。 如 果 设 置 了SW_SCROLLCHILDREN 标 志 并 且 插 字 符 矩 形 与 滚 动 矩 形 相 交 , 则 光 标 将 被 重新 定 位 。

所 有 输 入 和 输 出 的 坐 标 ( 属 于 lpRectScroll , lpRectClip , lpRectUpdate 和

prgnUpdate ) 都 被 假 定 使 用 了 客 户 坐 标 , 而 不 管 窗 口 具 有 的 是 CS_OWNDC 风

格 还 是 CS_CLASSDC 风 格 。如 果 有 必 要 ,可 以 使 用 W indows 的 LPtoDP 和 DPtoLP

函 数 将 该 坐 标 与 逻 辑 坐 标 相 互 转 换 。

请 参 阅 CWnd::RedrawWindow, CDC::ScrollDC, CWnd::ScrollWindow, CWnd::UpdateWindow, ::DeferWindowPos, ::ScrollWindowEx

CWnd::SendChildNotifyLastMsg

BOOL SendChildNotifyLastMsg( LRESULT* pResult = NULL );

返 回 值

如 果 子 窗 口 已 经 处 理 了 发 送 给 它 的 父 窗 口 的 消 息 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pResult

子 窗 口 产 生 的 结 果 , 将 通 过 父 窗 口 返 回 。

说 明

这 个 成 员 函 数 被 框 架 调 用 , 用 于 从 父 窗 口 向 子 窗 口 提 供 通 知 消 息 , 子 窗 口 可 以借 此 处 理 任 务 。

如 果 该 消 息 为 反 射 消 息 , SendChildNotifyLastMsg 将 当 前 消 息 发 送 给 它 的 来 源 。

有 关 消 息 反 射 的 更 多 信 息 参 见 联 机 的 《 Visual C++ 程 序 员 指 南 》 中 的 “ 处 理 反射 消 息 ” 。

请 参 阅 CWnd::OnChildNotify

CWnd::SendDlgItemMessage

LRESULT SendDlgItemMessage( int nID , UINT message , W P A R A M wParam = 0, LPARAM lParam = 0 );

返 回 值

指 定 了 控 件 的 窗 口 过 程 返 回 的 值 。 如 果 没 有 找 到 控 件 , 则 返 回 0 。

参 数

nID

指 定 了 对 话 框 控 件 的 标 识 符 , 该 控 件 将 接 收 消 息 。

message

指 定 了 要 发 送 的 消 息 。

wParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

lParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

说 明

这 个 函 数 向 控 件 发 送 一 条 消 息 。

SendDlgItemMessage 直 到 消 息 被 处 理 之 后 才 会 返 回 。

使 用 SendDlgItemMessage 等 同 于 获 得 给 定 控 件 的 CWnd* 指 针 并 调 用 其

SendMessage 成 员 函 数 。

请 参 阅 CWnd::SendMessage, ::SendDlgItemMessage

CWnd::SendMessage

LRESULT SendMessage( UINT message , W P A R A M wParam = 0, LPARAM

lParam = 0 );

返 回 值

消 息 处 理 的 结 果 ; 它 的 值 依 赖 于 发 送 的 消 息 。

message

指 定 了 要 发 送 的 消 息 。

wParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

lParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

说 明

这 个 函 数 向 窗 口 发 送 指 定 的 消 息 。 SendMessage 成 员 函 数 直 接 调 用 窗 口 过 程 并在 窗 口 过 程 处 理 了 消 息 以 后 才 返 回 。 这 与 PostMessage 成 员 函 数 形 成 对 比 , 该函 数 将 消 息 放 入 窗 口 的 消 息 队 列 并 立 即 返 回 。

请 参 阅 ::InSend M essage, CWnd::PostMessage, CWnd::SendDlgItemMessage, ::SendMessage

CWnd::SendMessageToDescendants

void SendMessageToDescendants( UINT message , W P A R A M wParam = 0, LPARAM lParam = 0, BOOL bDeep = TRUE, BOOL bOnlyPerm = FALSE );

message

指 定 了 要 发 送 的 消 息 。

wParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

lParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

bDeep

指 定 了 搜 索 的 深 度 。 如 果 为 TRUE , 则 递 归 搜 索 所 有 的 子 窗 口 ; 如 果 为

FALSE , 则 仅 搜 索 直 接 子 窗 口 。

bOnlyPerm

指 定 该 消 息 是 否 将 被 临 时 窗 口 接 收 。 如 果 为 TRUE , 则 临 时 窗 口 可 以 接收 这 个 消 息 ; 如 果 为 FALSE , 则 只 有 永 久 窗 口 才 能 接 收 这 个 消 息 。 有 关临 时 窗 口 的 更 多 信 息 参 见 技 术 注 释 3 。

说 明

调 用 这 个 成 员 函 数 以 向 所 有 的 后 代 窗 口 发 送 指 定 的 W indows 消 息 。

如 果 bDeep 为 FALSE , 则 消 息 仅 被 发 送 到 窗 口 的 直 接 子 窗 口 , 否 则 消 息 被 发

送 到 所 有 的 后 代 窗 口 。

如 果 bDeep 和 bOnlyPerm 为 TRU E , 则 在 临 时 窗 口 之 下 进 行 搜 索 。 在 这 种 情 况下 , 只 有 在 搜 索 过 程 中 遇 到 的 永 久 窗 口 才 能 接 收 消 息 。 如 果 bDeep 为 FALSE , 则 消 息 仅 被 发 送 到 窗 口 的 直 接 子 窗 口 。

请 参 阅 CWnd::SendMessage, CWnd::FromHandlePermanent, CWnd::FromHandle

CWnd::SendNotifyMessage

BOOL SendNotifyMessage( UINT message , W P A R A M wParam , LPARAM

lParam );

返 回 值

如 果 函 数 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

message

指 定 了 要 发 送 的 消 息 。

wParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

lParam

指 定 了 与 消 息 有 关 的 附 加 信 息 。

说 明

这 个 函 数 向 窗 口 发 送 指 定 的 消 息 。 如 果 窗 口 是 由 调 用 线 程 创 建 的 , 则SendNotifyMessage 调 用 窗 口 的 窗 口 过 程 , 并 在 窗 口 处 理 了 消 息 之 后 返 回 。 如 果窗 口 是 由 其 它 线 程 创 建 的 , 则 SendNotifyMessage 将 消 息 传 递 给 窗 口 过 程 并 立即 返 回 ; 它 并 不 等 待 窗 口 过 程 结 束 处 理 消 息 。

请 参 阅 CWnd::SendMessage, ::SendNotifyMessage

CWnd::SetActive W indow

CWnd* SetActiveWindow( );

返 回 值

原 来 活 动 的 窗 口 。

返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 使 CWnd 成 为 活 动 窗 口 。

SetActiveWindow 成 员 函 数 必 须 小 心 使 用 , 因 为 它 允 许 应 用 程 序 任 意 地 接 管 活动 窗 口 和 输 入 焦 点 。 通 常 , W indows 管 理 着 所 有 的 活 动 。

请 参 阅 ::SetActiveWindow, CWnd::GetActiveWindow

CWnd::SetCapture

CWnd* SetCapture( );

返 回 值

原 来 接 收 所 有 鼠 标 输 入 的 窗 口 的 指 针 。 如 果 没 有 这 样 的 窗 口 , 则 返 回 值 为

NULL 。 返 回 的 指 针 可 能 是 临 时 的 , 不 能 被 保 存 以 供 将 来 使 用 。

说 明

这 个 函 数 使 随 后 的 所 有 鼠 标 输 入 都 被 发 送 到 当 前 的 CWnd 对 象 , 并 不 考 虑 光 标的 位 置 。

当 CWnd 不 再 需 要 所 有 的 鼠 标 输 入 时 , 应 用 程 序 应 当 调 用 ReleaseCapture 函 数

以 使 其 它 窗 口 能 够 接 收 鼠 标 输 入 。

请 参 阅 ::ReleaseCapture, ::SetCapture, CWnd::GetCapture

CWnd::SetCaretPos

static void PASCAL SetCaretPos( POINT point );

参 数

point

指 定 了 插 字 符 的 新 的 x 和 y 坐 标 ( 客 户 坐 标 ) 。

说 明

这 个 函 数 设 置 插 字 符 的 位 置 。

SetCaretPos 成 员 函 数 仅 当 插 字 符 属 于 当 前 任 务 的 一 个 窗 口 时 才 移 动 它 。 不 论 插字 符 是 否 隐 藏 , SetCaretPos 都 移 动 插 字 符 的 位 置 。

插 字 符 是 一 种 共 享 资 源 。 如 果 窗 口 不 拥 有 插 字 符 , 它 就 不 应 移 动 插 字 符 。

请 参 阅 CWnd::GetCaretPos, ::SetCaretPos

CWnd::SetClipboardViewer

HWND SetClipboardViewer( );

返 回 值

如 果 成 功 , 则 返 回 剪 贴 板 观 察 器 链 中 下 一 个 窗 口 的 句 柄 。 应 用 程 序 必 须 保 存 这个 句 柄 ( 可 以 当 作 成 员 变 量 保 存 ) , 并 且 在 响 应 剪 贴 板 观 察 器 链 消 息 的 时 候 使用 它 。

说 明

每 当 剪 贴 板 的 内 容 发 生 变 化 时 , 这 个 函 数 将 窗 口 加 入 被 通 知 的 窗 口 链 ( 通 过

WM_DRAWCLIPBOARD 消 息 ) 。

属 于 剪 贴 板 观 察 器 链 的 窗 口 必 须 响 应 WM_DRAWCLIPBOARD 、WM_CHANGECBCHAIN 和 WM_DESTROY 消 息 , 并 将 消 息 传 递 到 链 中 的 下一 个 窗 口 。

这 个 成 员 函 数 向 窗 口 发 送 一 条 WM_DRAWCLIPBOARD 消 息 。 由 于 剪 贴 板 观察 器 链 中 下 一 个 窗 口 的 句 柄 还 没 有 返 回 , 应 用 程 序 不 应 传 递 它 在SetClipboardViewer 调 用 过 程 中 接 收 到 的 W M _DRAWCLIPBOARD 消 息 。

如 果 要 将 自 己 从 剪 贴 板 观 察 器 链 中 去 掉 , 则 应 用 程 序 必 须 调 用 ChangeClipboard

成 员 函 数 。

请 参 阅 CWnd::ChangeClipboardChain, ::SetClipboardViewer

CWnd::SetDlgCtrlID

int SetDlgCtrlID( int nID );

返 回 值

如 果 成 功 , 则 返 回 窗 口 以 前 的 标 识 符 ; 否 则 返 回 0 。

参 数

nID

被 设 为 控 件 标 识 符 的 新 值 。

说 明

这 个 函 数 将 窗 口 的 窗 口 ID 或 控 制 ID 设 为 新 值 。这 里 的 窗 口 可 以 是 任 何 子 窗 口 , 不 仅 是 对 话 框 中 的 控 件 。 这 种 窗 口 不 能 是 顶 层 窗 口 。

请 参 阅 CWnd::GetDlgCtrlID, CWnd::Create, CWnd::CreateEx, CWnd::GetDlgItem

void SetDlgItemInt( int nID , UINT nValue , BOOL bSigned = TRUE );

参 数

nID nValue

指 定 了 要 改 变 的 控 件 的 整 数 ID 。

指 定 了 用 于 生 成 项 目 文 本 的 整 数 值 。

bSigned

指 定 这 个 整 数 是 带 符 号 的 还 是 无 符 号 的 。 如 果 这 个 参 数 为 TRUE , 则nValue 为 带 符 号 的 。 如 果 这 个 参 数 为 TRUE 并 且 nValue 小 于 0 , 则 在 字符 串 中 , 将 在 第 一 个 数 字 之 前 加 上 负 号 。 如 果 这 个 参 数 为 FALSE , 则nValue 为 无 符 号 的 。

说 明

这 个 函 数 将 对 话 框 中 给 定 控 件 的 文 本 设 为 代 表 指 定 整 数 值 的 字 符 串 。

SetDlgItemInt 向 给 定 的 控 件 发 送 一 条 WM_SETTEXT 消 息 。

请 参 阅 CWnd::GetDlgItemInt, ::SetDlgItemInt, WM_SETTEXT

void SetDlgItemText( int nID , LPCTSTR lpszString );

参 数

nID

要 设 置 文 本 的 控 件 的 标 识 符 。

lpszString

指 向 一 个 CString 对 象 或 以 null 结 尾 的 字 符 串 , 其 中 包 含 了 要 拷 贝 到 控件 的 文 本 。

说 明

设 置 窗 口 或 对 话 框 拥 有 的 标 题 或 是 控 件 文 本 。

SetDlgItemText 向 给 定 的 控 件 发 送 一 条 WM_SETTEXT 消 息 。

请 参 阅 ::SetDlgItemText, WM_SETTEXT, CWnd::GetDlgItemText

CWnd::SetForegroundWindow

BOOL SetForegroundWindow( );

返 回 值

如 果 函 数 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

说 明

这 个 函 数 将 创 建 窗 口 的 线 程 推 向 前 台 并 激 活 该 窗 口 。 键 盘 输 入 被 定 向 到 这 个 窗口 , 并 且 将 向 用 户 显 示 不 同 的 视 觉 提 示 。 前 台 窗 口 是 指 用 户 当 前 工 作 的 窗 口 。前 台 窗 口 仅 针 对 顶 层 窗 口 而 言 ( 框 架 窗 口 或 对 话 框 ) 。

请 参 阅 CWnd::GetForegroundWindow

CWnd::SetFocus

CWnd* SetFocus( );

返 回 值

原 来 拥 有 输 入 焦 点 的 窗 口 对 象 的 指 针 。 如 果 没 有 这 样 的 窗 口 , 则 返 回 值 为

NULL 。 返 回 的 指 针 可 能 是 临 时 的 , 不 应 被 保 存 。

说 明

这 个 函 数 要 求 得 到 输 入 焦 点 。 输 入 焦 点 将 随 后 的 所 有 键 盘 输 入 定 向 到 这 个 窗

口 。 原 来 拥 有 输 入 焦 点 的 任 何 窗 口 都 将 失 去 它 。

SetFocus 成 员 函 数 项 失 去 输 入 焦 点 的 窗 口 发 送 一 条 W M _ K ILLFOCUS 消 息 , 并向 接 收 输 入 焦 点 的 窗 口 发 送 一 条 WM_SETFOCUS 消 息 。 它 还 激 活 该 窗 口 或 它的 父 窗 口 。

如 果 当 前 窗 口 是 激 活 的 , 但 是 不 具 有 输 入 焦 点 ( 这 意 味 着 , 没 有 窗 口 具 有 输 入焦 点 ) , 则 任 何 按 下 的 键 都 将 产 生 W M _SYSCHAR , W M _SYSKEYDOWN 或WM_SYSKEYUP 消 息 。

请 参 阅 ::SetFocus, CWnd::GetFocus

CWnd::SetFont

void SetFont( CFont* pFont , BOOL bRedraw = TRUE );

参 数

pFont

指 定 了 新 的 字 体 。

bRedraw

如 果 为 TRU E , 则 重 画 CWnd 对 象 。

这 个 函 数 将 窗 口 的 当 前 字 体 设 为 指 定 的 字 体 。 如 果 bRedraw 为 TRUE , 则 窗 口还 会 被 重 画 。

请 参 阅 CWnd::GetFont, WM_SETFONT

CWnd::SetIcon

HICON SetIcon( HICON hIcon , BOOL bBigIcon );

返 回 值

指 向 一 个 图 标 的 句 柄 。

参 数

hIcon

以 前 图 标 的 句 柄 。

bBigIcon

如 果 为 TRU E , 则 指 定 了 32 × 32 像 素 的 图 标 ; 如 果 为 FALSE , 则 指 定了 16 × 16 像 素 的 图 标 。

调 用 这 个 函 数 以 将 图 标 设 为 hIcon 所 标 识 的 指 定 图 标 。 如 果 注 册 了 窗 口 类 , 则它 选 择 一 个 图 标 。

请 参 阅 GetIcon

CWnd::SetMenu

BOOL SetMenu( CMenu* pMenu );

返 回 值

如 果 菜 单 发 生 了 变 化 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pMenu

标 识 了 新 的 菜 单 。 如 果 这 个 参 数 为 NULL , 则 当 前 菜 单 被 清 除 。

说 明

这 个 函 数 将 当 前 菜 单 设 为 指 定 的 菜 单 。 它 使 窗 口 被 重 画 以 反 映 菜 单 的 变 化 。

函 数 以 完 成 这 个 任 务 。

请 参 阅 CMenu::DestroyMenu, CMenu::LoadMenu, ::SetMenu, CWnd::GetMenu

CWnd::SetOwner

void SetOwner( CWnd* pOwnerWnd );

参 数

pOwnerWnd

标 识 了 窗 口 对 象 的 新 拥 有 者 。 如 果 这 个 参 数 为 NULL , 则 窗 口 对 象 没 有拥 有 者 。

说 明

这 个 函 数 将 当 前 窗 口 的 拥 有 者 设 为 指 定 的 窗 口 对 象 。 然 后 这 个 拥 有 者 就 可 以 从当 前 窗 口 对 象 接 收 命 令 消 息 。 在 缺 省 情 况 下 , 当 前 窗 口 的 父 窗 口 是 其 拥 有 者 。

通 常 在 与 窗 口 层 次 关 系 不 相 关 的 窗 口 之 间 建 立 联 系 是 很 有 用 的 。例 如 ,CToolBar 向 它 的 拥 有 者 而 不 是 父 窗 口 发 送 通 知 消 息 。 这 允 许 工 具 条 在 向 其 它 窗 口 ( 例 如现 场 框 架 窗 口 ) 发 送 通 知 的 时 候 变 成 某 个 窗 口 ( 例 如 OLE 容 器 应 用 程 序 的 窗

由 框 架 窗 口 拥 有 的 任 何 窗 口 都 被 隐 藏 或 显 示 。 这 种 拥 有 关 系 是 通 过 调 用

SetOwner 来 明 确 设 置 的 。

这 个 函 数 中 的 拥 有 概 念 与 GetWindow 中 的 拥 有 概 念 不 同 。

请 参 阅 CWnd::GetOwner, CToolBar

CWnd::SetParent

CWnd* SetParent( C W nd* pWndNewParent );

返 回 值

如 果 成 功 , 则 返 回 以 前 的 父 窗 口 的 指 针 。 返 回 的 指 针 可 能 是 临 时 的 , 不 应 被 保存 以 供 将 来 使 用 。

参 数

pWndNewParent

标 识 了 新 的 父 窗 口 。

这 个 函 数 改 变 子 窗 口 的 父 窗 口 。

如 果 子 窗 口 可 见 , 则 W indows 执 行 适 当 的 重 画 和 重 绘 工 作 。

请 参 阅 ::SetParent, CWnd::GetParent

CWnd::SetProperty

void SetProperty( DISPID dwDispID , VARTYPE vtProp , ... );

参 数

dwDispID

标 识 了 要 设 置 的 属 性 。 这 个 值 通 常 是 由 组 件 廊 提 供 的 。

vtProp

...

指 定 了 要 设 置 的 属 性 的 类 型 。 可 能 的 取 值 参 见

COleDispatchDriver::InvokeHelper 中 的 说 明 部 分 。

vtProp 指 定 的 类 型 的 单 个 参 数 。

调 用 这 个 成 员 函 数 以 设 置 dwDispID 所 标 识 的 OLE 控 件 属 性 。

注意 这 个 函 数 仅 应 在 代 表 OLE 控 件 的 CWnd 对 象 中 调 用 。

有 关 在 OLE 控 件 容 器 中 使 用 这 个 成 员 函 数 的 更 多 信 息 参 见 联 机 的 《 V isual C++ 程 序 员 指 南 》中 的 文 章“ ActiveX 控 件 容 器 :在 ActiveX 控 件 容 器 中 编 写 ActiveX 控 件 ” 。

请 参 阅 CWnd::InvokeHelper, COleDispatchDriver, CWnd::CreateControl

CWnd::SetRedraw

void SetRedraw( BOOL bRedraw = TRUE );

参 数

bRedraw

指 定 了 重 画 标 志 的 状 态 。 如 果 这 个 参 数 为 TRUE , 则 重 画 标 志 被 设 置 ; 如 果 为 FALSE , 则 该 标 志 被 清 除 。

应 用 程 序 调 用 SetRedraw 以 允 许 重 画 变 化 或 防 止 变 化 被 重 画 。

这 个 成 员 函 数 设 置 或 清 除 重 画 标 志 。 当 重 画 标 志 被 清 除 时 , 在 每 次 变 化 以 后 , 内 容 不 会 更 新 , 直 到 重 画 标 志 被 设 置 才 会 重 新 绘 出 。 例 如 , 如 果 一 个 应 用 程 序需 要 在 列 表 框 中 加 入 几 个 项 , 则 可 以 清 除 重 画 标 志 , 加 入 项 , 然 后 设 置 重 画 标志 。 最 后 , 应 用 程 序 可 以 调 用 Invalidate 或 InvalidateRect 成 员 函 数 以 使 列 表 框被 重 画 。

请 参 阅 WM_SETREDRAW

CWnd::SetScrollInfo

BOOL SetScrollInfo( int nBar , LPSCROLLINFO lpScrollInfo , BOOL bRedraw = TRUE );

返 回 值

如 果 成 功 , 则 返 回 TRU E ; 否 则 返 回 FALSE 。

参 数

nBar

指 定 滚 动 条 是 一 个 控 件 还 是 窗 口 非 客 户 区 的 一 部 分 。 如 果 它 是 非 客 户 区的 一 部 分 , 则 nBar 也 指 定 了 滚 动 条 是 水 平 的 、 垂 直 的 , 还 是 都 有 。 它 可以 是 下 列 值 之 一 :

  • SB_ C T L 包 含 滚 动 条 的 控 制 参 数 。 M _hWnd 的 数 值 必 须

    是 滚 动 条 控件 的 句 柄 。

  • SB_HORZ 指 定 了 窗 口 的 水 平 滚 动 条 。

  • SB_VERT 指 定 了 窗 口 的 垂 直 滚 动 条 。

lpScrollInfo

指向 SCROLLINFO 结 构 的 指 针 。 有 关 这 个 结 构 的 更 多 信 息 参 见 《 W in32 SDK 程 序 员 参 考 》 。

bRedraw

指 定 滚 动 条 是 否 应 被 重 画 以 反 映 新 的 位 置 。 如 果 bRedraw 为 TRU E , 则滚 动 条 将 被 重 画 。 如 果 它 为 FALSE , 则 它 不 会 被 重 画 。 缺 省 情 况 下 滚 动条 将 被 重 画 。

说 明

调 用 这 个 成 员 函 数 以 设 置 SCROLLINFO 结 构 为 滚 动 条 维 护 的 信 息 。

SCROLLINFO 结 构 中 包 含 了 有 关 滚 动 条 的 信 息 , 包 括 最 小 和 最 大 滚 动 位 置 、页 面 大 小 和 滚 动 块 的 位 置 。 有 关 改 变 这 个 结 构 缺 省 值 的 更 多 信 息 参 见 《 W in32

SDK 程 序 员 参 考 》 中 的 SCROLLINFO 主 题 。

指 明 滚 动 条 位 置 的 MFC Windows 消 息 处 理 函 数 , CWnd::OnHScroll 和CWnd::OnVScroll , 仅 提 供 16 位 的 位 置 数 据 。 GetScrollInfo 和 SetScrollInfo 提供 了 32 位 的 滚 动 条 位 置 数 据 。 因 而 , 在 处 理 CWnd::OnHScroll 或CWnd::OnVScroll 的 时 候 , 应 用 程 序 可 以 调 用 GetScrollInfo 以 获 得 32 位 的 滚 动条 位 置 数 据 。

注意 CWnd::GetScrollInfo 允 许 应 用 程 序 使 用 32 位 的 滚 动 条 位 置 。

请 参 阅 CWnd::GetScrollInfo, CWnd::SetScrollPos, CWnd::OnVScroll, CWnd::OnHScroll, SCROLLINFO

CWnd::SetScrollPos

int SetScrollPos( int nBar , int nPo s , BOOL bRedraw = TRUE );

返 回 值

滚 动 块 的 以 前 位 置 。

参 数

nBar

nPos

指 定 了 要 设 置 的 滚 动 条 。 这 个 参 数 可 以 是 下 列 值 :

  • SB_HORZ 设 置 窗 口 的 水 平 滚 动 条 的 滚 动 块 位 置 。

  • SB_VERT 设 置 窗 口 的 垂 直 滚 动 条 的 滚 动 块 位 置 。

指 定 了 滚 动 块 的 新 位 置 。 它 必 须 在 滚 动 范 围 之 内 。

bRedraw

指 定 滚 动 条 是 否 应 被 重 画 以 反 映 新 的 滚 动 块 位 置 。 如 果 这 个 参 数 为

TRUE , 则 滚 动 条 将 被 重 画 ; 如 果 为 FALSE , 则 滚 动 条 不 会 被 重 画 。

说 明

这 个 函 数 设 置 滚 动 块 的 当 前 位 置 , 并 且 如 果 需 要 , 则 重 画 滚 动 条 以 反 映 滚 动 块的 新 位 置 。

当 滚 动 条 需 要 在 随 后 对 别 的 函 数 的 调 用 中 重 画 时 , 将 bRedraw 设为 FALSE 将会 是 有 用 的 。

请 参 阅 ::SetScrollPos, CWnd::GetScrollPos, CScrollBar::SetScrollPos

CWnd::SetScrollRange

void SetScrollRange( int nBar , int nMinPos , int nMaxPos , BOOL bRedraw =

TRUE );

参 数

nBar

指 定 了 要 设 置 的 滚 动 条 。 这 个 参 数 可 以 取 下 列 值 :

  • SB_HORZ 设 置 窗 口 的 水 平 滚 动 条 的 范 围 。

  • SB_VERT 设 置 窗 口 的 垂 直 滚 动 条 的 范 围 。

nMinPos

指 定 滚 动 位 置 的 最 小 值 。

nMaxPos

指 定 滚 动 位 置 的 最 大 值 。

bRedraw

指 定 滚 动 条 是 否 需 要 被 重 画 以 反 映 变 化 。 如 果 bRedraw 为 TRUE , 则 滚动 条 被 重 画 ; 如 果 为 FALSE , 则 滚 动 条 不 会 被 重 画 。

说 明

这 个 函 数 设 置 给 定 滚 动 条 的 最 小 和 最 大 位 置 。 它 也 可 以 被 用 于 隐 藏 或 显 示 标 志

的 滚 动 条 。

应 用 程 序 不 应 在 处 理 滚 动 条 通 知 消 息 的 时 候 调 用 这 个 函 数 以 隐 藏 滚 动 条 。

如 果 在 调 用 了 SetScrollPos 成 员 函 数 之 后 立 即 调 用 SetScrollRange , 则

SetScrollPos 成 员 函 数 中 的 bRedraw 参 数 必 须 为 0 以 防 止 滚 动 条 被 重 画 两 次 。

标 准 滚 动 条 的 缺 省 范 围 是 0 到 100 。 滚 动 条 控 件 的 缺 省 范 围 为 空 ( nMinPosnMaxPos 的 值 都 为 0 ) 。 nMinPosnMaxPos 所 指 定 的 值 之 间 的 差 不 能 大 于INT_MAX 。

请 参 阅 CWnd::SetScrollPos, ::SetScrollRange, CWnd::GetScrollRange

CWnd::SetTimer

UINT SetTimer(UINT nIDEven t, UINT nElapse , void (CALLBACK EXPORT*

lpfnTimer ) (HWND, UINT, UINT, DWORD) );

返 回 值

如 果 函 数 成 功 , 则 返 回 新 定 时 器 的 标 识 符 。 应 用 程 序 可 以 将 这 个 值 传 递 给

K illTimer 成 员 函 数 以 销 毁 定 时 器 。 如 果 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

nIDEvent

指 定 了 不 为 零 的 定 时 器 标 识 符 。

nElapse

指 定 了 定 时 值 ; 以 毫 秒 为 单 位 。

lpfnTimer

指 定 了 应 用 程 序 提 供 的 TimerProc 回 调 函 数 的 地 址 , 该 函 数 被 用 于 处 理WM_TIMER 消 息 。 如 果 这 个 参 数 为 NULL , 则 WM_TIMER 消 息 被 放 入应 用 程 序 的 消 息 队 列 并 由 CWnd 对 象 来 处 理 。

说 明

这 个 函 数 设 置 一 个 系 统 定 时 器 。 指 定 了 一 个 定 时 值 , 每 当 发 生 超 时 , 则 系 统 就向 设 置 定 时 器 的 应 用 程 序 的 消 息 队 列 发 送 一 个 WM_TIMER 消 息 , 或 者 将 消 息传 递 给 应 用 程 序 定 义 的 TimerProc 回 调 函 数 。

lpfnTimer 回 调 函 数 不 需 要 被 命 名 为 TimerProc , 但 是 它 必 须 按 照 如 下 方 式 定 义 :

void CALLBACK EXPORT TimerProc(

H W N D hWnd, // 调 用 SetTimer 的 CWnd 的 句 柄

UINT n Msg, // WM_TIMER UINT nIDEvent // 定 时 器 标 识

D W O R D dwTime // 系 统 时 间

);

定 时 器 是 有 限 的 全 局 资 源 ; 因 此 对 于 应 用 程 序 来 说 , 检 查 SetTimer 返 回 的 值 以确 定 定 时 器 是 否 可 用 是 很 重 要 的 。

请 参 阅 WM_TIMER, CWnd::KillTimer, ::SetTimer

CWnd::SetWindowContextHelpId

BOOL SetWindowContextHelpId( DWORD dwContextHelpId );

返 回 值

如 果 函 数 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

dwContextHelpId

帮 助 上 下 文 标 识 符 。

说 明

调 用 这 个 成 员 函 数 以 将 帮 助 上 下 文 标 识 符 与 指 定 的 窗 口 相 关 联 。

如 果 子 窗 口 不 具 有 帮 助 上 下 文 标 识 符 , 则 它 继 承 它 的 父 窗 口 的 标 识 符 。 同 理 , 如 果 被 拥 有 的 窗 口 不 具 有 帮 助 上 下 文 标 识 符 , 则 它 继 承 它 的 拥 有 者 窗 口 的 标 识符 。 这 种 对 帮 助 上 下 文 标 识 符 的 继 承 允 许 应 用 程 序 只 为 对 话 框 和 它 的 所 有 控 件设 置 一 个 标 识 符 。

请 参 阅 CWnd::GetWindowContextHelpId

CWnd::SetWindowPlacement

BOOL SetWindowPlacement( const WINDOWPLACEMENT* lpwndpl );

返 回 值

如 果 函 数 成 功 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

lpwndpl

指 向 一 个 W INDOWPLACEMENT 结 构 , 指 定 了 新 的 显 示 状 态 和 位 置 。

说 明

这 个 函 数 设 置 显 示 状 态 和 窗 口 的 正 常 ( 复 原 ) 、 最 小 化 和 最 大 化 位 置 。

请 参 阅 CWnd::GetWindowPlacement, ::Set W indowPlacement

CWnd::SetWindowPos

BOOL SetWindowPos( const CWnd* pWndInsertAfter , int x , int y , int cx , int cy , UINT nFlags );

返 回 值

如 果 函 数 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

pWndInsertAfter

标 识 了 在 Z 轴 次 序 上 位 于 这 个 CWnd 对 象 之 前 的 CWnd 对 象 。 这 个 参 数可 以 是 指 向 CWnd 对 象 的 指 针 , 也 可 以 是 指 向 下 列 值 的 指 针 :

  • wndBottom 将 窗 口 放 在 Z 轴 次 序 的 底 部 。 如 果 这 个 CWnd 是

    一 个 顶层 窗 口 , 则 窗 口 将 失 去 它 的 顶 层 状 态 ; 系 统 将 这 个 窗 口 放 在 其 它 所 有窗 口 的 底 部 。

  • wndTop 将 窗 口 放 在 Z 轴 次 序 的 顶 部 。

  • wndTopMost 将 窗 口 放 在 所 有 非 顶 层 窗 口 的 上 面 。 这 个 窗

    口 将 保 持它 的 顶 层 位 置 , 即 使 它 失 去 了 活 动 状 态 。

  • wndNoTopMost 将 窗 口 重 新 定 位 到 所 有 非 顶 层 窗 口 的 顶 部

    ( 这 意 味着 在 所 有 的 顶 层 窗 口 之 下 ) 。 这 个 标 志 对 那 些 已 经 是 非 顶 层 窗 口 的 窗口 没 有 作 用 。

有 关 这 个 函 数 以 及 这 些 参 数 的 使 用 规 则 参 见 说 明 部 分 。

x

y cx cy

nFlags

指 定 了 窗 口 左 边 的 新 位 置 。指 定 了 窗 口 顶 部 的 新 位 置 。指 定 了 窗 口 的 新 宽 度 。

指 定 了 窗 口 的 新 高 度 。

指 定 了 大 小 和 位 置 选 项 。 这 个 参 数 可 以 是 下 列 值 的 组 合 :

  • SWP_DRAWFRAME 围 绕 窗 口 画 出 边 框( 在 创 建 窗 口 的 时 候 定 义 )。

  • SWP_FRAMECHANGED 向 窗 口 发 送 一 条 W M _NCCALCSIZE 消息 , 即 使 窗 口 的 大 小 不 会 改 变 。 如 果 没 有 指 定 这 个 标 志 , 则 仅 当 窗 口的 大 小 发 生 变 化 时 才 发 送 WM_NCCALCSIZE 消 息 。

  • SWP_HIDEWINDOW 隐 藏 窗 口 。

    • SWP_NOACTIVATE 不 激 活 窗 口 。 如 果 没 有 设 置 这 个 标 志

      , 则 窗 口将 被 激 活 并 移 动 到 顶 层 或 非 顶 层 窗 口 组 ( 依 赖 于 pWndInsertAfter 参 数的 设 置 ) 的 顶 部 。

    • SWP_NOCOPYBITS 废 弃 这 个 客 户 区 的 内 容 。 如 果 没 有 指

      定 这 个 参数 , 则 客 户 区 的 有 效 内 容 将 被 保 存 , 并 在 窗 口 的 大 小 或 位 置 改 变 以 后被 拷 贝 回 客 户 区 。

    • SWP_NOMOVE 保 持 当 前 的 位 置 ( 忽 略 xy 参 数 ) 。

    • SWP_NOOWNERZORDER 不 改 变 拥 有 者 窗 口 在 Z 轴 次 序 上 的

      位置。

    • SWP_NOREDRAW 不 重 画 变 化 。 如 果 设 置 了 这 个 标 志 , 则

      不 发 生任 何 种 类 的 变 化 。 这 适 用 于 客 户 区 、 非 客 户 区 ( 包 括 标 题 和 滚 动 条 ) 以 及 被 移 动 窗 口 覆 盖 的 父 窗 口 的 任 何 部 分 。 当 这 个 标 志 被 设 置 的 时 候 , 应 用 程 序 必 须 明 确 地 无 效 或 重 画 要 重 画 的 窗 口 和 父 窗 口 的 任 何 部 分 。

    • SWP_NOREPOSITION 与 SWP_NOOWNERZORDER 相 同 。

    • SWP_NOSENDCHANGING 防 止 窗 口 接 收

WM_WINDOWPOSCHANGING 消 息 。

  • SWP_NOSIZE 保 持 当 前 的 大 小 ( 忽 略 cxcy 参 数 ) 。

  • SWP_NOZORDER 保 持 当 前 的 次 序 ( 忽 略 pWndInsertAfte r) 。

  • SWP_SHOWWINDOW 显 示 窗 口 。

说 明

调 用 这 个 成 员 函 数 以 改 变 子 窗 口 、 弹 出 窗 口 和 顶 层 窗 口 的 大 小 、 位 置 和 Z 轴 次序 。

窗 口 在 屏 幕 上 按 照 它 们 的 Z 轴 次 序 排 序 。 在 Z 轴 次 序 上 处 于 顶 端 的 窗 口 将 程 序在 所 有 其 它 窗 口 的 顶 部 。

子 窗 口 的 所 有 坐 标 都 是 客 户 坐 标 ( 相 对 于 父 窗 口 客 户 区 的 左 上 角 ) 。

窗 口 可 以 被 移 动 到 Z 轴 次 序 的 顶 部 , 既 可 以 通 过 将 p W ndInsertAfter 参 数 设 为&wndTopMos t, 并 确 保 没 有 设 置 SWP_NOZORDER 标 志 , 也 可 以 通 过 设 置 窗口 的 Z 轴 次 序 使 它 位 于 所 有 现 存 的 顶 层 窗 口 上 方 。 当 一 个 非 顶 层 窗 口 被 设 为 顶层 窗 口 时 , 它 拥 有 的 窗 口 也 被 设 为 顶 层 的 。 它 的 拥 有 者 不 发 生 变 化 。

如 果 顶 层 窗 口 被 重 新 定 位 到 Z 轴 次 序 的 底 部 ( &wndBottom ) 或 任 何 非 顶 层 窗口 之 后 , 则 它 将 不 再 是 顶 层 窗 口 。 当 顶 层 窗 口 被 变 为 非 顶 层 窗 口 时 , 它 所 有 的拥 有 者 和 它 拥 有 的 所 有 窗 口 都 被 变 为 非 顶 层 窗 口 。

如 果 既 没 有 指 定 SWP_NOACTIVE 标 志 也 没 有 指 定 SWP_NOZORDER 标 志( 这意 味 着 应 用 程 序 要 求 窗 口 被 同 时 激 活 并 放 入 指 定 的 Z 轴 次 序 ) , 则pWndInsertAfter 参 数 中 指 定 的 值 将 只 在 下 列 环 境 下 适 用 :

  • 在 pWndInsertAfter 参 数 中 既 没 有 指 定 &wndTopMost 也 没 有 指

&wndNoTopMost 。

  • 这 个 窗 口 不 是 活 动 窗 口 。

应 用 程 序 不 能 激 活 一 个 非 活 动 窗 口 但 同 时 又 不 把 它 带 到 Z 轴 次 序 的 顶 部 。 应 用程 序 可 以 没 有 任 何 限 制 地 改 变 活 动 窗 口 的 Z 轴 次 序 。

非 顶 层 窗 口 可 能 拥 有 一 个 顶 层 窗 口 , 但 是 反 之 则 不 成 立 。 任 何 被 顶 层 窗 口 拥 有的 窗 口 ( 例 如 对 话 框 ) 都 将 自 己 变 为 顶 层 窗 口 , 以 确 保 所 有 被 拥 有 的 窗 口 位 于它 们 的 拥 有 者 上 方 。

在 W indows 3.1 或 更 新 的 版 本 中 , 可 以 将 窗 口 移 动 到 Z 轴 次 序 的 顶 部 , 并 通 过设 置 它 们 的 WS_EX_TOPMOST 风 格 而 将 之 锁 定 在 那 里 。 这 种 顶 层 窗 口 即 使 在失 去 活 动 状 态 以 后 也 会 保 持 顶 层 位 置 。 例 如 , 选 择 W inHelp 的 Always On Top 命 令 会 使 帮 助 窗 口 变 为 顶 层 , 并 且 在 你 返 回 应 用 程 序 之 后 它 还 保 持 可 见 。

要 创 建 一 个 顶 层 窗 口 , 应 在 调 用 SetWindowPos 的 时 候 将 pWndInsertAfter 参 数设 为 &wndTopMos t , 或 者 在 创 建 窗 口 的 时 候 设 置 WS_EX_TOPMOST 风 格 。

如 果 Z 轴 次 序 中 包 含 了 任 何 具 有 WS_EX_TOPMOST 风 格 的 窗 口 , 则 用&wndTopMost 移 动 的 窗 口 将 被 放 到 所 有 非 顶 层 窗 口 的 顶 部 , 但 是 位 于 任 何 顶层 窗 口 的 下 面 。 当 应 用 程 序 激 活 一 个 不 具 有 WS_EX_TOPMOST 风 格 的 非 活 动窗 口 时 , 该 窗 口 将 被 移 动 到 所 有 非 顶 层 窗 口 的 上 方 , 但 是 位 于 所 有 顶 层 窗 口 的下 方 。

如 果 在 调 用 SetWindowPos 的 时 候 pWndInsertAfter 参 数 被 设 为 &wndBottom , 并 且 CWnd 是 一 个 顶 层 窗 口 , 则 该 窗 口 失 去 顶 层 状 态 ( WS_EX_BOTTOM 风

格 被 清 除 ) , 并 且 系 统 将 窗 口 放 在 Z 轴 次 序 的 底 部 。

请 参 阅 ::DeferWindowPos, ::SetWindowPos

CWnd::SetWindowRgn

int Set W indowRgn( HRGN hRgn , BOOL bRedraw );

返 回 值

如 果 函 数 成 功 , 则 返 回 值 为 非 零 值 。 如 果 函 数 失 败 , 则 返 回 值 为 零 。

参 数

hRgn

一 个 区 域 的 句 柄 。

bRedraw

如 果 为 TRU E , 则 操 作 系 统 在 设 置 区 域 之 后 重 画 窗 口 ; 否 则 , 它 不 进 行 重 画 。通 常 , 如 果 窗 口 可 见 , 则 将 bRedraws 设 为 TRU E 。 如 果 被 设 为 TRUE , 则 系 统向 窗 口 发 送 WM_WINDOWPOSCHANGING 和 WM_WINDOWPOSCHANGED

消 息 。

调 用 这 个 成 员 函 数 以 设 置 窗 口 的 区 域 。

窗 口 区 域 的 坐 标 是 相 对 于 窗 口 ( 而 不 是 窗 口 客 户 区 ) 的 左 上 角 。

在 成 功 地 调 用 SetWindowRgn 之 后 , 操 作 系 统 拥 有 区 域 句 柄 hRgn 所 指 定 的 区域 。 操 作 系 统 不 生 成 该 区 域 的 拷 贝 , 因 此 不 要 使 用 此 区 域 句 柄 进 行 其 它 函 数 调用 , 并 且 不 要 关 闭 这 个 区 域 句 柄 。

请 参 阅 ::Set W indowRgn, CWnd::GetWindowRgn

CWnd::SetWindowText

void SetWindowText( LPCTSTR lpszString );

参 数

lpszString

指 向 一 个 CString 对 象 或 以 null 结 尾 的 字 符 串 , 将 被 用 作 新 的 标 题 或 控件 文 本 。

这 个 函 数 将 窗 口 的 标 题 设 为 指 定 的 文 本 。 如 果 窗 口 为 一 个 控 件 , 则 将 设 置 控 件内 的 文 本 。

这 个 函 数 使 一 条 WM_SETTEXT 消 息 被 发 送 到 这 个 窗 口 。

请 参 阅 CWnd::GetWindowText, ::Set W indowText

CWnd::ShowCaret

void ShowCaret( );

说 明

这 个 函 数 在 屏 幕 上 当 前 插 字 符 位 置 显 示 插 字 符 。 一 旦 被 显 示 , 则 插 字 符 就 开 始自 动 闪 烁 。

ShowCaret 成 员 函 数 仅 当 插 字 符 具 有 形 状 并 且 没 有 被 连 续 隐 藏 两 次 或 更 多 次 时才 显 示 它 。

隐 藏 插 字 符 是 积 累 性 的 。 如 果 H ideCaret 成 员 函 数 被 调 用 了 五 次 , 则 ShowCaret

也 必 须 被 调 用 五 次 以 显 示 插 字 符 。

插 字 符 是 一 种 共 享 资 源 。 窗 口 仅 应 在 它 拥 有 输 入 焦 点 或 处 于 活 动 状 态 时 才 显 示

插 字 符 。

请 参 阅 CWnd::HideCaret, ::ShowCaret

CWnd::ShowOwnedPopups

void ShowOwnedPopups( BOOL bShow = TRUE );

参 数

bShow

指 定 弹 出 窗 口 是 要 被 显 示 还 是 隐 藏 。 如 果 这 个 参 数 为 TRUE , 则 所 有 隐藏 的 弹 出 窗 口 将 被 显 示 。 如 果 这 个 参 数 为 FALSE , 则 所 有 可 见 的 弹 出 窗口 将 被 隐 藏 。

说 明

显 示 或 隐 藏 这 个 窗 口 拥 有 的 所 有 弹 出 窗 口 。

请 参 阅 ::ShowOwnedPopups

CWnd::ShowScrollBar

void ShowScrollBar( UINT nBa r , BOOL bShow = TRUE );

参 数

nBar

bShow

指 定 滚 动 条 是 一 个 控 件 还 是 窗 口 非 客 户 区 的 一 部 分 。 如 果 它 是 非 客 户 区的 一 部 分 , 则 nBar 还 指 明 了 滚 动 条 是 水 平 的 、 垂 直 的 , 还 是 都 有 。 它 必须 是 下 列 值 之 一 :

  • SB_BOTH 指 定 了 窗 口 的 水 平 和 垂 直 滚 动 条 。

  • SB_HORZ 指 定 了 窗 口 的 水 平 滚 动 条 。

  • SB_VERT 指 定 了 窗 口 的 垂 直 滚 动 条 。

指 定 了 W indows 要 显 示 还 是 隐 藏 滚 动 条 。 如 果 这 个 参 数 为 TRUE , 则 滚动 条 被 显 示 ; 否 则 隐 藏 滚 动 条 。

说 明

这 个 函 数 显 示 或 隐 藏 滚 动 条 。

应 用 程 序 不 应 在 处 理 滚 动 条 通 知 消 息 的 时 候 调 用 ShowScrollBar 以 隐 藏 滚 动 条 。

请 参 阅 ::ShowScrollBar, CScrollBar::ShowScrollBar

CWnd::ShowWindow

BOOL ShowWindow( int nCmdShow );

返 回 值

如 果 窗 口 原 来 可 见 , 则 返 回 非 零 值 ; 如 果 CWnd 原 来 是 隐 藏 的 , 则 返 回 0 。

参 数

nCmdShow

指 定 了 CWnd 应 如 何 被 显 示 。 它 必 须 是 下 列 值 之 一 :

  • SW_HIDE 隐 藏 窗 口 并 将 活 动 状 态 传 递 给 其 它 窗 口 。

  • SW_MINIMIZE 最 小 化 窗 口 并 激 活 系 统 列 表 中 的 顶 层 窗 口

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

    化 的 ,

W indows 恢 复 其 原 来 的 大 小 和 位 置 。

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

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

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

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

保 持 活 动 状 态 。

  • SW_SHOWNA 按 照 当 前 状 态 显 示 窗 口 。 当 前 活 动 的 窗 口 将

    保 持 活动 状 态 。

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

动 的 窗 口 将 保 持 活 动 状 态 。

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

    大化 的 , 则 W indows 恢 复 它 原 来 的 大 小 和 位 置 。

说 明

这 个 函 数 设 置 窗 口 的 可 视 状 态 。

每 个 应 用 程 序 只 应 用 C W inApp::m_nCmdShow 为 主 窗 口 调 用 一 次ShowWindow 。 以 后 调 用 ShowWindow 应 该 用 上 面 列 出 的 值 来 代 替C W inApp::m_nCmdShow 指 定 的 值 。

请 参 阅 ::ShowWindow, CWnd::OnShowWindow, CWnd::ShowOwnedPopups

CWnd::SubclassDlgItem

BOOL SubclassDlgItem( UINT nID , CWnd* pParent );

返 回 值

如 果 函 数 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

nID

控 件 的 ID 。

pParent

控 件 的 父 窗 口 ( 通 常 是 对 话 框 ) 。

说 明

调 用 这 个 成 员 函 数 以 动 态 地 子 类 化 一 个 从 对 话 框 模 板 创 建 的 控 件 , 并 将 之 与CWnd 对 象 相 连 接 。 当 控 件 被 动 态 子 类 化 时 , 窗 口 消 息 将 通 过 CWnd 的 消 息 映射 转 发 , 并 首 先 调 用 CWnd 类 的 消 息 处 理 函 数 。 被 发 往 基 类 的 消 息 将 被 传 递 到控 件 的 缺 省 消 息 处 理 函 数 。

这 个 成 员 函 数 将 一 个 W indows 控 件 与 CWnd 对 象 连 接 , 并 替 换 控 件 的 WndProc 和 AfxWndProc 函 数 。 这 个 函 数 在 GetSuperWndProcAddr 成 员 函 数 返 回 的 位 置中 保 存 旧 的 WndProc 地 址 。

请 参 阅 CWnd::GetSuperWndProcAddr, CWnd::DefWindowProc, CWnd::SubclassWindow, CWnd::Attach

CWnd::SubclassWindow

BOOL SubclassWindow( HWND hWnd );

返 回 值

如 果 函 数 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。

参 数

hWnd

窗 口 句 柄 。

说 明

调 用 这 个 成 员 函 数 以 动 态 子 类 化 一 个 窗 口 , 并 将 它 与 这 个 CWnd 对 象 相 连 接 。当 窗 口 被 动 态 子 类 化 时 ,窗 口 消 息 将 通 过 CWnd 的 消 息 映 射 ,并 首 先 调 用 CWnd 类 中 的 消 息 处 理 函 数 。 发 送 给 基 类 的 消 息 将 被 传 递 给 窗 口 的 缺 省 消 息 处 理 函数 。

这 个 成 员 函 数 将 W indows 控 件 与 CWnd 对 象 连 接 起 来 , 并 替 换 窗 口 的 WndProc

和 AfxWndProc 函 数 。 这 个 函 数 在 CW nd 对 象 中 保 存 旧 的 WndProc 的 指 针 。

请 参 阅 CWnd::GetSuperWndProcAddr, CWnd::DefWindowProc,

CWnd::SubclassDlgItem, CWnd::Attach, CWnd::PreSubclassWindow, CWnd::UnsubclassWindow

CWnd::UnlockWindowUpdate

void CWnd::Unlock W indowUpdate();

说 明

调 用 这 个 成 员 函 数 以 解 锁 用 CWnd::Lock W indowUpdate 锁 定 的 窗 口 。

在 同 一 时 刻 只 能 用 Lock W indowUpdate 锁 定 一 个 窗 口 。 有 关 锁 定 窗 口 的 更 多 信息 参 见 CWnd::LockWindowUpdate 或 W in32 函数 LockWindowUpdate 。

CWnd::UnsubclassWindow

HWND UnsubclassWindow( );

返 回 值

被 取 消 子 类 化 的 窗 口 的 句 柄 。

说 明

调 用 这 个 成 员 函 数 以 将 W ndProc 设 为 原 来 的 值 ,并 将 H W N D 标 识 窗 口 与 CWnd

对 象 分 离 。

请 参 阅

CWnd::SubclassWindow, CWnd::PreSubclassWindow,CWnd::GetSuperWndProcAddr, CWnd::DefWindowProc, CWnd::SubclassDlgItem, CWnd::Attach

CWnd::UpdateData

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

返 回 值

如 果 操 作 成 功 , 则 返 回 非 零 值 ; 否 则 返 回 0 。 如 果 bSaveAndValidate 为 TRUE , 则 返 回 非 零 值 意 味 着 已 成 功 地 使 数 据 有 效 。

参 数

bSaveAndValidate

说 明

调 用 这 个 成 员 函 数 以 初 始 化 对 话 框 中 的 数 据 , 或 者 获 得 并 检 验 对 话 框 数 据 。

当 一 个 模 式 对 话 框 被 创 建 时 , 框 架 自 动 在 CDialog::OnInitDialog 的 缺 省 实 现 中调 用 UpdateData , bSaveAndValidate 被 设 为 FALSE 。 这 个 函 数 在 对 话 框 可 见 之前 被 调 用 。 CDialog::OnOK 的 缺 省 实 现 令 bSaveAndValidate 为 TRUE 并 调 用 这个 成 员 函 数 以 获 得 对 话 框 中 的 数 据 , 如 果 成 功 , 将 关 闭 对 话 框 ( 如 果 在 对 话 框中 点 击 了 Cancel 按 钮 , 则 对 话 框 将 被 关 闭 , 并 不 获 取 数 据 ) 。

请 参 阅 CWnd::DoDataExchange

CWnd::UpdateDialogControls

void UpdateDialogControls( CCmdTarget* pTarge t, BOOL bDisableIfNoHndler );

参 数

pTarget

指 向 应 用 程 序 的 主 框 架 窗 口 , 被 用 于 转 发 更 新 消 息 。

bDisableIfNoHndler

说 明

调 用 这 个 成 员 函 数 以 更 新 对 话 框 按 钮 和 对 话 框 或 使 用

ON_UPDATE_COMMAND_UI 机 制 的 窗 口 中 其 它 控 件 的 状 态 。

如 果 子 控 件 不 具 有 处 理 函 数 , 并 且 bDisableIfNoHndler 为 TRUE , 则 子 控 件 将被 禁 止 。

框 架 在 应 用 程 序 的 空 闲 处 理 中 为 对 话 框 条 或 工 具 条 上 的 控 件 调 用 这 个 成 员 函数 。

请 参 阅 CFrame W nd::m_bAutoMenuEnable

CWnd::UpdateWindow

void Update W indow( );

说 明

如 果 更 新 区 域 不 为 空 , 则 发 送 一 条 WM_PAINT 消 息 以 更 新 客 户 区 域 。UpdateWindow 成 员 函 数 直 接 发 送 一 条 WM_PAINT 消 息 , 越 过 应 用 程 序 队 列 。如 果 更 新 区 域 为 空 , 则 WM_PAINT 不 会 被 发 送 。

请 参 阅 ::UpdateWindow, CWnd::RedrawWindow

CWnd::ValidateRect

void ValidateRect( LPCRECT lpRect );

参 数

lpRect

指 向 一 个 CRect 对 象 或 RECT 结 构 , 其 中 包 含 了 要 从 更 新 区 域 中 清 除 的矩 形 的 客 户 坐 标 。 如 果 lpRect 为 NULL , 则 整 个 窗 口 都 变 为 有 效 。

说 明

这 个 函 数 从 窗 口 的 更 新 区 域 内 清 除 给 定 的 矩 形 , 使 给 定 矩 形 之 内 的 客 户 区 有效 。 BeginPaint 成 员 函 数 自 动 使 整 个 客 户 区 有 效 。 如 果 在 下 一 个 WM_PAINT 消 息 产 生 之 前 需 要 使 一 部 分 更 新 区 域 有 效 , 则 不 应 调 用 ValidateRect 和ValidateRgn 成 员 函 数 。

W indows 将 继 续 产 生 WM_PAINT 消 息 , 直 到 当 前 的 更 新 区 域 有 效 。

请 参 阅 CWnd::BeginPaint, ::ValidateRect, CWnd::ValidateRgn

void ValidateRgn( CRgn* pRgn );

参 数

pRgn

指 向 一 个 CRgn 对 象 的 指 针 , 它 标 识 了 要 从 更 新 区 域 内 清 除 的 区 域 。 如果 这 个 参 数 为 NULL , 则 整 个 客 户 区 都 将 被 清 除 。

说 明

这 个 函 数 从 窗 口 的 当 前 更 新 区 域 中 清 除 给 定 的 区 域 , 使 区 域 内 的 客 户 区 有 效 。给 定 的 区 域 必 须 是 以 前 通 过 区 域 函 数 创 建 的 。 区 域 坐 标 被 假 设 为 使 用 客 户 区 坐标 。

BeginPaint 成 员 函 数 自 动 使 整 个 客 户 区 有 效 。 如 果 在 产 生 下 一 个 WM_PAINT 消 息 之 前 需 要 使 更 新 区 域 的 一 部 分 有 效 ,则 不 能 调 用 ValidateRect 和 ValidateRgn 成 员 函 数 。

请 参 阅 ::ValidateRgn, CWnd::ValidateRect

static CWnd* PASCAL WindowFromPoint( POINT point );

返 回 值

指 向 窗 口 对 象 的 指 针 , 点 位 于 该 窗 口 之 内 。 如 果 在 给 定 点 不 存 在 任 何 窗 口 , 则返 回 NULL 。 返 回 的 指 针 可 能 是 临 时 的 , 不 应 被 保 存 以 供 将 来 使 用 。

参 数

point

指 定 了 一 个 CPoint 对 象 或 POINT 数 据 结 构 , 它 定 义 了 要 检 查 的 点 。

说 明

这 个 函 数 获 得 包 含 指 定 点 的 窗 口 ; point 必 须 指 定 一 个 屏 幕 上 用 屏 幕 坐 标 表 示 的点 。

W indowFromPoint 不 获 取 隐 藏 或 禁 止 的 窗 口 , 即 使 该 点 位 于 窗 口 之 内 。 应 用 程

序 应 当 使 用 ChildWindowFromPoint 成 员 函 数 以 实 现 没 有 限 制 的 搜 索 。

请 参 阅 ::W indowFromPoint, CWnd::ChildWindowFromPoint

virtual LRESULT WindowProc( UINT message , W PARAM wParam , LPARAM

lParam );

返 回 值

返 回 值 依 赖 于 消 息 。

参 数

message

指 定 了 要 处 理 的 W indows 消 息 。

wParam

提 供 了 可 用 于 消 息 处 理 的 附 加 信 息 。 这 个 参 数 的 值 与 消 息 有 关 。

lParam

提 供 了 可 用 于 消 息 处 理 的 附 加 信 息 。 这 个 参 数 的 值 与 消 息 有 关 。

说 明

这 个 函 数 为 CWnd 对 象 提 供 了 W indows 过 程 ( W indowProc) 。 它 通 过 窗 口 的消 息 映 射 分 派 消 息 。

数 据 成 员

CWnd::m_hWnd

说 明

与 CWnd 相 连 接 的 W indows 窗 口 的 句 柄 。 m_hWnd 数 据 成 员 是 一 个 H W N D 类型 的 公 有 变 量 。

请 参 阅 CWnd::Attach, CWnd::Detach, CWnd::FromHandle