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 返 回 与 窗 口 矩 形 而 不 是 客 户 矩 形 相 对 应
的 设 备 环境。
- 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 代 替 这 个 成 员 函 数 来 为 你 的 应 用 程 序 实 现 消 息 框 。
下 面 显 示 了 可 以 被 用 在 消 息 框 中 的 不 同 的 系 统 图 标 :
MB_ICONHAND , MB_ICONSTOP 和 MB_ICONERROR
MB_ICONQUESTION
MB_ICONEXCLAMATION 和 MB_ICONWARNING
MB_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 对 象 , x 和 y 参 数 是 相 对 于 屏 幕 的 左 上 角 的 。 对 于 子 对 象 , 它 们 是 相 对 于 父 窗 口 客 户 区 的 左 上 角 的 。
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 内 部 使 用
- 指 定 了 上 下 文 代 码 。 如 果 按 键 时 ALT 键 是 按 下 的 , 则
该 值 为
1 ; 否 则 , 值 为 0
-
指 定 了 以 前 的 键 状 态 。 如 果 在 发 送 消 息 前 键 是 按 下 的
, 则 值为 1 ; 如 果 键 是 弹 起 的 , 则 值 为 0
-
指 定 了 键 的 暂 态 。 如 果 该 键 正 被 放 开 , 则 值 为 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 第 一 项 排 在 第 二 项 前 面
-
第 一 项 与 第 二 项 顺 序 相 同
-
第 一 项 排 在 第 二 项 后 面
参 数
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 内 部 使 用
- 上 下 文 代 码 ( 如 果 按 下 键 的 时 候 ALT 键 是 被 放 开 的 ,
则 返 回
1 ; 否 则 返 回 0 )
续表
-
以 前 的 键 状 态 ( 如 果 此 函 数 被 调 用 前 该 键 是 被 按 下 的
, 则 为 1 ; 如 果 该 键 是 放 开 的 , 则 该 值 为 0 )
-
暂 态 ( 如 果 键 正 被 放 开 , 则 为 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 );
返 回 值
如 果 nReason 和 nState 所 标 识 的 操 作 被 处 理 了 ,则 返 回 TRU E ;否 则 返 回 FALSE 。
参 数
nState
DSCSTATE 枚 举 量 中 的 一 个 命 名 常 量 , 列 在 Remarks 部 分 。
nReason
DSCSTATE 枚 举 量 中 的 一 个 命 名 常 量 , 列 在 Remarks 部 分 。
pBool
一 个 布 尔 型 结 果 , 指 明 nState 和 nReason 代 表 的 操 作 是 否 应 当 继 续 。
说 明
当 与 数 据 源 控 件 相 绑 定 的 控 件 修 改 或 试 图 修 改 游 标 时 , 就 在 响 应 数 据 源 控 件 引发 的 事 件 时 调 用 这 个 接 收 方 通 知 。 使 用 它 来 跟 踪 数 据 源 控 件 产 生 的 原 因
( 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 )
-
– 10 未 使 用
11 – 12 W indows 内 部 使 用
- 上 下 文 代 码 ( 如 果 按 下 键 时 ALT 键 时 被 按 下 的 , 则 为 1
; 否则 为 0 )
续表
-
原 来 的 键 状 态 ( 如 果 在 调 用 之 前 键 时 按 下 的 , 则 为 1
; 如 果 键是 弹 起 的 , 则 为 0 )
-
暂 态 ( 如 果 键 正 在 被 释 放 , 则 为 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 )
-
– 10 未 使 用
续 表
11 – 12 W indows 内 部 使 用
-
上 下 文 代 码 ( 如 果 按 下 键 时 ALT 键 时 被 按 下 的 , 则 为 1
; 否 则为 0 )
-
原 来 的 键 状 态 ( 如 果 在 调 用 之 前 键 时 按 下 的 , 则 为 1
; 如 果 键 是弹 起 的 , 则 为 0 )
-
暂 态 ( 如 果 键 正 在 被 释 放 , 则 为 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 指 定 了 重 复 计 数 。 该 值 为 用 户 按 住 键 时 产 生 的 重 复 击 键 次 数
- 23 指 定 了 扫 描 码 。 其 值 依 赖 于 原 始 设 备 制 造 商 ( OEM
)
-
指 定 了 该 键 是 否 是 扩 展 键 , 如 增 强 101 或 102 键 的 键 盘
上 右手 的 ALT 和 CTRL 键 。 如 果 它 是 扩 展 键 , 则 其 值 为 1 ; 否 则为 0
-
28 W indows 内 部 使 用
-
指 定 了 上 下 文 代 码 。 如 果 当 按 下 键 时 ALT 键 是 按 下 的
, 则 其值 为 1 ; 否 则 , 其 值 为 0
-
指 定 了 原 来 的 键 状 态 。 如 果 在 消 息 发 出 之 前 键 是 按 下
的 , 则其 值 为 1 ; 如 果 是 弹 起 的 , 则 为 0
-
指 定 了 键 的 暂 态 。 如 果 键 正 被 释 放 , 则 其 值 为 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 内 部 使 用
- 上 下 文 代 码 ( 如 果 键 被 按 下 时 ALT 键 是 被 按 住 的 , 则
为 1 ; 否 则 为 0 )
续表
-
以 前 的 键 状 态 ( 如 果 键 在 调 用 前 被 按 下 , 则 为 1 ; 否
则 为 0 )
-
暂 态 ( 如 果 键 是 要 被 放 开 , 则 为 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 ; 否 则 返 回 0 )
-
– 10 没 有 使 用
11 – 12 W indows 内 部 使 用
-
上 下 文 代 码 ( 如 果 键 被 按 下 时 ALT 键 是 被 按 住 的 , 则
为 1 ; 否则为 0 )
-
以 前 的 键 状 态 ( 如 果 键 在 调 用 前 被 按 下 , 则 为 1 ; 否
则 为 0 )
-
暂态 ( 如 果 键 是 要 被 放 开 , 则 为 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 ; 否 则 返 回 0 )
-
– 10 没 有 使 用
11 – 12 W indows 内 部 使 用
-
上 下 文 代 码 ( 如 果 键 被 按 下 时 ALT 键 是 被 按 住 的 , 则
为 1 ; 否则为 0 )
-
以 前 的 键 状 态 ( 如 果 键 在 调 用 前 被 按 下 , 则 为 1 ; 否
则 为 0 )
-
暂态 ( 如 果 键 正 被 放 开 , 则 为 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
表 示 了 更 新 区 域 。 如 果 prgnUpdate 和 lpRectUpdate 都 为 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 使 lpRectUpdate 或 prgnUpdate ( 仅 有 一 个 可
能为 NULL ) 无 效 。 如 果 这 个 两 个 参 数 都 为 NULL , 则 整 个 窗 口 都 无 效 。
下 面 的 标 志 被 用 于 使 窗 口 有 效 :
-
RDW_NOERASE 禁 止 任 何 未 处 理 的 WM_ERASEBKGND 消 息 。
-
RDW_NOFRAME 禁 止 任 何 未 处 理 的 WM_NCPAINT 消 息 。 这 个 标志
必 须 与 RDW_VALIDATE 一 起 使 用 ,通 常 也 与 RDW_NOCHILDREN 一 起 使 用 。 这 个 选 项 必 须 小 心 使 用 , 因 为 它 可 能 会 使 窗 口 的 某 些 部 分不 能 正 确 地 画 出 。
-
RDW_NOINTERNALPAINT 禁 止 任 何 未 处 理 的 内 部 WM_PAINT 消息 。
这 个 标 志 不 影 响 从 无 效 区 域 产 生 的 WM_PAINT 消 息 。
-
RDW_VALIDATE 使 lpRectUpdate 或 prgnUpdate ( 仅 有 一 个 可 能
为
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 的 客 户 区
上 , 并执 行 布 局 。
- 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 , 则 窗 口 的 任 何 子 窗 口 的 位 置 将 被 设 为 xAmout 和 yAmout 指 定 的 偏 移 , 并 且 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 所 指 定 的 矩 形 相 交 的
所有 子 窗 口 滚 动 dx 和 dy 所 指 定 的 数 目 的 像 素 。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 。 滚 动 条 控 件 的 缺 省 范 围 为 空 ( nMinPos 和nMaxPos 的 值 都 为 0 ) 。 nMinPos 和 nMaxPos 所 指 定 的 值 之 间 的 差 不 能 大 于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 保 持 当 前 的 位 置 ( 忽 略 x 和 y 参 数 ) 。
-
SWP_NOOWNERZORDER 不 改 变 拥 有 者 窗 口 在 Z 轴 次 序 上 的
位置。
-
SWP_NOREDRAW 不 重 画 变 化 。 如 果 设 置 了 这 个 标 志 , 则
不 发 生任 何 种 类 的 变 化 。 这 适 用 于 客 户 区 、 非 客 户 区 ( 包 括 标 题 和 滚 动 条 ) 以 及 被 移 动 窗 口 覆 盖 的 父 窗 口 的 任 何 部 分 。 当 这 个 标 志 被 设 置 的 时 候 , 应 用 程 序 必 须 明 确 地 无 效 或 重 画 要 重 画 的 窗 口 和 父 窗 口 的 任 何 部 分 。
-
SWP_NOREPOSITION 与 SWP_NOOWNERZORDER 相 同 。
-
SWP_NOSENDCHANGING 防 止 窗 口 接 收
-
WM_WINDOWPOSCHANGING 消 息 。
-
SWP_NOSIZE 保 持 当 前 的 大 小 ( 忽 略 cx 和 cy 参 数 ) 。
-
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